【发布时间】:2018-06-05 05:08:55
【问题描述】:
我想在单行 for 循环中对列表中的一项进行赋值。
首先我有一个列表,其中每个列表项都是字典对象。然后,我对列表的每个项目进行循环并比较字典的“nodeid”字段是否为 106。如果是,我将新字段添加到该字典中。代码如下。
K= []
K.append({'nodeid': 100 ,'elemid': 200})
K.append({'nodeid': 106 ,'elemid': 206})
K.append({'nodeid': 107 ,'elemid': 206})
for item in K:
if item['nodeid']==106:
item['S']= [2 , 124, 123 , 3532, 35]
我想将算法的循环部分写在一行中,类似于
[item['S']=12343 for item in K if item['nodeid']==106]
但是这种方法不起作用。 如何在一行中编写此循环?
谢谢
【问题讨论】:
-
您的代码非常适合这项任务。除了练习理解之外,没有必要尝试写单行字。
-
也许你可以有一个字典字典,而不是使用列表,由 nodeid 键控。然后你可以很容易地做到
K[106]['S'] = [2 , 124, 123 , 3532, 35]。在 O(1) 时间内,不少于。
标签: python list for-loop variable-assignment