将多个值附加到单个键

时间:2013-12-12 13:13:45

标签: python

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,'}

任何关于这个问题在哪里出错的想法? 谢谢!

2 个答案:

答案 0 :(得分: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)
    
  3. 如果您不想使用defaultdict,可以使用dict本身,就像这样

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

答案 1 :(得分: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,因为这是作业。