我正在尝试将列表存储在dicts中,这很有效,但我不喜欢我构建/初始化列表的方式。我想摆脱: dummy [i] = [(1,2,3)] 。有什么建议吗?
dummy = dict()
alphabet = ["aaa", "bbb", "ccc"]
for i in alphabet:
dummy[i] = [(1,2,3)] # <-- better initialization?
dummy[i].append([(1,2,3)])
输出结果为:
{'aaa': [(1, 2, 3), [(1, 2, 3)]], 'bbb': [(1, 2, 3), [(1, 2, 3)]], 'ccc': [(1, 2, 3), [(1, 2, 3)]]}
Sidequestion:是否有任何其他数据类型支持一个键的多个值?
答案 0 :(得分:1)
collections.defaultdict
允许您为不存在的键指定初始值设定项。
import collections
dummy = collections.defaultdict(list)
alphabet = ["aaa", "bbb", "ccc"]
for i in alphabet:
dummy[i].append([(1,2,3)])
dummy[i].append([(1,2,3)])
答案 1 :(得分:1)
使用Ignacio建议的内容或使用dict.setdefault:
dummy = dict()
alphabet = ["aaa", "bbb", "ccc"]
for i in alphabet:
dummy.setdefault(i,[]).append((1,2,3)) # <-- better initialization?
如果你想用列表值初始化一个dict,你也可以用dict comp创建它:
alphabet = ["aaa", "bbb", "ccc"]
dummy = {k:[(1,2,3)] for k in alphabet}
print(dummy)
{'aaa': [(1, 2, 3)], 'bbb': [(1, 2, 3)], 'ccc': [(1, 2, 3)]}
如果你有重复键setdefault和defaultdict是你想要的。