Skip to main content
 首页 » 编程设计

python之我应该使用 list() 还是用括号括起来

2025年05月04日14虾米姐

如果我有一个嵌套字典,我想将一个值放入列表中并添加到列表中,我应该这样做吗

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 
>>>