【问题标题】:How to make string to dictionary and update values that exist?如何将字符串制作成字典并更新存在的值?
【发布时间】:2014-04-23 09:20:54
【问题描述】:

我打开一个包含以下内容的文件:

    TransactionNo   Date        CustomerId      PurchasePairs
    -------------   ----        ----------      -------------
    1               09-04-2014  barakobama      potatoes:2.67,sugar:1.98,cereal:5.99,crisps:1.09
    2               11-04-2014  barakobama      parsley:0.76,cereal:3.22
    3               11-04-2014  vladimirputin   bread:0.66,milk:2.87,parsley:1.33

我想要一本像这样的字典:

{'vladimirputin': {'milk': 2.87, 'parsley': 1.33, 'bread': 0.66}, 
'barakobama': {'parsley': 0.76, 'sugar': 1.98, 'crisps': 1.09, 
'potatoes': 2.67, 'cereal': 9.21}}

我试过这个:

def makeCustomerDictionary(fileNameStr):
    my_dict={}
    file=open(fileNameStr,'r')

    for line in file:
        if line.isdigit():
            line_split=line.split("\t")
            customer_key=set(line_split[2])

问题是我不知道如何将产品“谷物”的价格加上 barakobama 的价值。

【问题讨论】:

  • 好。所以写一些代码来做到这一点。如果遇到麻烦,请回来寻求帮助。
  • 我不确定“line.isdigit()”是什么意思。
  • 假设你总是想跳过前两行,你应该只使用 readline() 或 next()。

标签: python string file dictionary key-value


【解决方案1】:

试试这个:

#!/usr/bin/env python3

d = {}

with open("in.txt") as i:
    header1 = i.readline()
    header2 = i.readline()

    for line in i:
        fields = line.split()
        d[fields[2]] = dict(item.split(":") for item in fields[3].split(","))

print(d)

输出:

{'vladimirputin': {'milk': '2.87', 'bread': '0.66', 'parsley': '1.33'}, 'barakobama': {'parsley': '0.76', 'cereal': '3.22'}}

如果您想要floats,请将行更改为:

d[fields[2]] = dict((item.split(":")[0], float(item.split(":")[1])) for item in fields[3].split(","))

输出:

{'vladimirputin': {'milk': 2.87, 'parsley': 1.33, 'bread': 0.66}, 'barakobama': {'parsley': 0.76, 'cereal': 3.22}}

【讨论】:

  • 问题是第二次购买的“barakobama”在他的价值字典中没有更新..必须添加“parsley:0.76,cereal:3.22”
猜你喜欢
  • 2017-05-31
  • 2019-07-17
  • 2011-01-13
  • 2017-09-02
  • 1970-01-01
  • 1970-01-01
  • 2020-12-13
  • 1970-01-01
  • 2014-11-11
相关资源
最近更新 更多