我想使用列表理解构建一个包含一些字典的列表。我尝试使用.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()
。
很抱歉,我第一次收到的信息不正确。
答案 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
很明显,只有在实际需要额外的复杂性时,您才这样做。