如果我有一个嵌套字典,我想将一个值放入列表中并添加到列表中,我应该这样做吗
mydict[my_key][my_value] = [mydict[my_key][my_value]].append(new_value)
或者这个
mydict[my_key][my_value] = list(mydict[my_key][my_value]).append(new_value)
结构如下:
{'foo': {'bar': 'hi'}}
我想要:
{'foo': {'bar': ['hi', 'bye']}}
请您参考如下方法:
你不应该做任何一个。
list.append 就地工作并始终返回 None。因此,在 Python 执行其中任何一行之后,mydict[my_key][my_value] 将被分配给 None。
您需要在其自己的行上调用 list.append:
mydict[my_key][my_value] = [mydict[my_key][my_value]]
mydict[my_key][my_value].append(new_value)
此外,list() 和 [] 是两个不同的东西。
将
mydict[my_key][my_value]放在方括号中会形成一个单项列表,其中mydict[my_key][my_value]是项目。然而,使用
list()告诉 Python 迭代mydict[my_key][my_value]并将其项目收集到列表中。此外,如果mydict[my_key][my_value]不可迭代,则会引发TypeError。
下面是我上面所说的演示:
>>> tup = (1, 2, 3)
>>> [tup] # Places tup in a list
[(1, 2, 3)]
>>> list(tup) # Makes tup into a list
[1, 2, 3]
>>>
>>> [1]
[1]
>>> list(1) # Integers are not iterable
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
>>>
