如何在列表推导中向dict添加元素?

时间:2018-12-23 08:51:50

标签: python list dictionary

我想使用列表理解构建一个包含一些字典的列表。我尝试使用.update(),但得到None

例如

  >>> data = [ {}.update({'demo': i}) for i in range(5) } ]
  >>> data
  [None, None, None, None, None]

我想要的是:

  [ {'demo': 0}, {'demo': 1}, {'demo': 2}, {'demo': 3}, {'demo': 4}]

有什么主意吗?谢谢。

关于 coldspeed的困惑,上面的示例只是一个简单的演示,如果{}不是空目录而是任意目录怎么办?如果我们只需要使用列表推导更新列表中dict的每个项目,我想也许我们无法避免使用update。这就是为什么我想到.update()

很抱歉,我第一次收到的信息不正确。

1 个答案:

答案 0 :(得分:1)

coldspeed在对您的问题的评论中说:

  

$ ./bin/rdcolorval <dat/colorval.txt arr[ 0] : RED 65 arr[ 1] : RED 2 arr[ 2] : RED 3 arr[ 3] : RED 4 arr[ 4] : RED 5 arr[ 5] : RED 6 arr[ 6] : RED 7 arr[ 7] : RED 8 arr[ 8] : RED 9 arr[ 9] : RED 10 arr[10] : RED 74 arr[11] : RED 81 arr[12] : RED 75

怎么了?

您显示的代码有问题:

  

[{'demo': i} for i in range(5) } ]?是就地操作,因此它会返回None并在丢失引用并对其进行垃圾回收之前就地更新字典。

但是,让我们给您带来疑问的好处,并假设您的 actual 问题稍微复杂一些。解决方案是定义一个小函数:

update

很明显,只有在实际需要额外的复杂性时,您才这样做。