2014-04-23 31 views
0

我打开包含此文件:如何使字符串字典和更新存在的值?

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的价格增加产品“麦片”的价格。

+3

好。所以写一些代码来做到这一点。如果您遇到麻烦,请回来寻求帮助。 – juanchopanza

+1

我不确定“line.isdigit()”的含义。 – user189

+0

假设你总是想跳过前两行,你应该只使用readline()或next()。 –

回答

0

试试这个:

#!/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'}} 

如果你想float S,行更改为:

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}} 
+0

请参阅http://legacy.python.org/dev/peps/pep-0343/ –

+0

对不起,这不是正确的输出 – user3560284

+0

@ user3560284为什么不呢?什么是错误或缺失? –

相关问题