2013-12-12 20 views
0

fruits.txt包含追加多个值,从而单个按键

avocado, green 
apple, yellow 
pear, green 
apple, green 

我尝试打印从文件创建的字典。我尝试检查密钥是否已经在字典中,如果没有创建新密钥。

印刷应该是这个样子

green 
    avocado 
    pear 
    apple 
yellow 
    apple 

到目前为止我的代码:

d = {} 
file = open("fruits.txt","r") 
for line in file: 
    (key,val) = line.split() 
    if val in d.values(): 
     d[val].append(key) 
    else: 
     d[val]=key 

print(d) 

但这只能打印出

{'yellow': 'apple,', 'green': 'apple,'} 

任何想法,在那里我去这个问题错了吗? 谢谢!

回答

1
  1. 您可以使用defaultdict这里
  2. 始终使用with语句,当你正在处理的文件

    from collections import defaultdict 
    d = defaultdict(list) 
    with open("fruits.txt","r") as inFile: 
        for line in inFile: 
         k, v = line.rstrip().split() 
         d[v].append(k) 
    

如果你不想使用defaultdict,您可以使用dict本身,像这样

d = {} 
with open("fruits.txt","r") as inFile: 
    for line in inFile: 
     k, v = line.rstrip().split() 
     d.setdefault(v, []).append(k) 
+0

我的教授讲授处理不当收集兆瓦或文件:( 这是考试复习。谢谢! – user2840144

+0

@ user2840144请检查我的答案现在 – thefourtheye

+0

太感谢你了。那是我更容易跟随:) – user2840144

0

您错过了键值和分隔字符,并且必须使用列表作为值。

d = {} 

file_src = open("fruits.txt","r") 
for line in file_src: 
    (val, key) = line.strip().split(", ") 
    if d.get(key): 
     d[key].append(val) 
    else: 
     d[key] = [val] 

print(d) 

是由你来格式化最后一个字典d,因为这是作业。

+0

好吧,我跟着你。谢谢!这是期末考试复习练习题哈哈 – user2840144