繁体   English   中英

当python字典键的值是列表时显示所有值

[英]Displaying all values when python dictionary key has a value that is a list

我被严重卡住了,不胜感激指向正确方向的手电筒。 我有一个要导入为文本文件的列表。 它有名称,每一行都有编号。 名称重复1、2或3次。 目标是使输出为{Key:[,,] ...}。 我只设法显示了其中一个值。

dictionary = {}
with open('%Filename%') as f:
    for line in f:
        num, key = line.strip().split()
        dictionary[key] = [num]
print(dictionary)

我希望输出为{'USA': ['15','91','99']...}相反,我得到的只是{'USA': ['99]...}

使用collection.defaultdict

例如:

from collections import defaultdict

dictionary = defaultdict(list)
with open('%Filename%') as f:
    for line in f:
        num, key = line.strip().split()
        dictionary[key].append(num)
print(dictionary)

dict.setdefault

例如:

dictionary = {}
with open('%Filename%') as f:
    for line in f:
        num, key = line.strip().split()
        dictionary.setdefault(key, []).append(num)
print(dictionary)
  • 注意:您需要使用list.append将元素追加到列表中。
dictionary = {}
with open('%Filename%') as f:
    for line in f:
        num, key = line.strip().split()
        if not key in dictionary:
            dictionary[key] = []
        dictionary[key].append(num)
print(dictionary)

使用dict.get很容易解决:

dictionary = {}
with open('%Filename%') as f:
    for line in f:
        num, key = line.strip().split()
        dictionary[key] = dictionary.get(key, []) + [num]
print(dictionary)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM