Python 如何使字符串成为字典并更新现有的值?
我打开一个包含以下内容的文件:Python 如何使字符串成为字典并更新现有的值?,python,string,file,dictionary,key-value,Python,String,File,Dictionary,Key Value,我打开一个包含以下内容的文件: TransactionNo Date CustomerId PurchasePairs ------------- ---- ---------- ------------- 1 09-04-2014 barakobama potatoes:2.67,sugar:1.98,cereal:5.99,crisps:1.09 2
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的价值增加产品“谷物”的价格。试试这个:
#!/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'}}
{'vladimirputin': {'milk': 2.87, 'parsley': 1.33, 'bread': 0.66}, 'barakobama': {'parsley': 0.76, 'cereal': 3.22}}
如果要浮动,请将行更改为:
d[fields[2]] = dict((item.split(":")[0], float(item.split(":")[1])) for item in fields[3].split(","))
输出:
{'vladimirputin': {'milk': '2.87', 'bread': '0.66', 'parsley': '1.33'}, 'barakobama': {'parsley': '0.76', 'cereal': '3.22'}}
{'vladimirputin': {'milk': 2.87, 'parsley': 1.33, 'bread': 0.66}, 'barakobama': {'parsley': 0.76, 'cereal': 3.22}}
好。因此,编写一些代码来实现这一点。如果你遇到麻烦,请回来寻求帮助。我不确定“line.isdigit()”是什么意思。假设你总是想跳过前两行,那么你应该使用readline()或next()。问题是第二次购买“barakobama”并没有更新他的价值字典。必须在其上添加“欧芹:0.76,谷物:3.22”