Python Dictionary附加值错误

时间:2016-12-21 08:27:46

标签: python dictionary append

我正在尝试将值(列表)附加到字典上失败。将值设置为“相等”有效,但附加不起作用。

DurationDict = dict()
DurationDict[str(curYear)] = duration  // This works
DurationDict[str(curYear)].append(duration) //This does't work.

任何想法?

3 个答案:

答案 0 :(得分:2)

您可以附加到list,但不能附加到dict。 python dictdocumented here

如果您希望所有词典条目都有list,则可以使用defaultdict

collections import defaultdict

DurationDict = defaultdict(list)
DurationDict[str(curYear)].append(duration)

defaultdict的工作方式与普通dict类似,但它会返回“工厂”的结果。 - 在这种情况下list()如果您正在查找的密钥尚不存在。然后,您可以附加到此(空)列表。

答案 1 :(得分:2)

如果要附加到字典的值,则值应为list的类型。

让我们考虑以下示例:

>>> k = {"a":1}
>>> k["b"] = 2
>>> k["c"] = [2]
>>> k["c"].append("new value") # here you can append because value of c is type of list.
>>> print(k)
{'a': 1, 'c': [2, 'new value'], 'b': 2}
>>> k["b"].append("new value") # here you can not append because value of b is type of int 

答案 2 :(得分:0)

您只能追加lists。如果您有一个空字典d

d = {} # initialize an empty dictionary
d['a'].append(1) # will NOT work

但是如果你已经定义了一个空的list,那么

d = {'a': []} # initialize with an empty list
df['a'].append(1) # will work

>>> d
{'a': [1]}