字典与元组作为值

时间:2013-09-07 20:19:18

标签: python dictionary

是否可以在Python中创建这样的字典?

{'string':[(a,b),(c,d),(e,f)], 'string2':[(a,b),(z,x)...]}

第一个错误已经解决了,谢谢! 但是,我在for循环中做元组,所以它一直在变化。 当我尝试做的时候:

d[key].append(c)

因为c是一个元组。

我现在又收到了另一个错误:

AttributeError: 'tuple' object has no attribute 'append'

感谢所有答案,我设法让它正常运作!

1 个答案:

答案 0 :(得分:2)

您是否有理由以这种方式构建字典?你可以简单地定义

d = {'string': [('a', 'b'), ('c', 'd'), ('e', 'f')], 'string2': [('a', 'b'), ('z', 'x')]}

如果您想要一个新条目:

d['string3'] = [('a', 'b'), ('k', 'l')]

如果您希望将元组附加到您的某个列表中:

d['string2'].append(('e', 'f'))

现在您的问题更清楚了,只需构建一个带循环的字典,假设您事先知道某些列表中的密钥keys

d = {}

for k in keys:
    d[k] = []

    # Now you can append your tuples if you know them.  For instance:
    # d[k].append(('a', 'b'))

如果您只是想首先构建字典,还有词典理解:

d = {k: [] for k in keys}

  

感谢您的回答。但是,有没有办法使用它   defaultdict?

from collections import defaultdict

d = defaultdict(list)

for i in 'string1','string2':
   d[i].append(('a','b'))

或者您可以使用setdefault

 d = {}
 for i in 'string1','string2':
     d.setdefault(i, []).append(('a','b'))