我正在尝试将值(列表)附加到字典上失败。将值设置为“相等”有效,但附加不起作用。
DurationDict = dict()
DurationDict[str(curYear)] = duration // This works
DurationDict[str(curYear)].append(duration) //This does't work.
任何想法?
答案 0 :(得分:2)
您可以附加到list
,但不能附加到dict
。 python dict
是documented 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]}