词典列表的Pythonic编辑方法

词典列表的Pythonic编辑方法,python,dictionary,Python,Dictionary,我写了适合我的代码。但我想知道我是否能用更好的方式写作 我的目的是在dataR中找到“col”键的值等于dataS元素的第一个元素,并将“quan”键的值加1。dataR是一个字典列表。数据是一个列表 for item in dataS: dataR[dataR.index(next(x for x in dataR if x['col']==item))].['quan'] += 1 您不需要按索引查找行,您已经有了它: for item in dataS: first_ro

我写了适合我的代码。但我想知道我是否能用更好的方式写作

我的目的是在dataR中找到“col”键的值等于dataS元素的第一个元素,并将“quan”键的值加1。dataR是一个字典列表。数据是一个列表

for item in dataS:
    dataR[dataR.index(next(x for x in dataR if x['col']==item))].['quan'] += 1

您不需要按索引查找行,您已经有了它:

for item in dataS:
    first_row = next(row for row in dataR
                     if row['col'] == item)
    first_row['quan'] += 1

dataR
是一系列
dict
对象的名称
first_row
是我们为序列中的一个对象指定的名称。如果我们使用该名称修改该对象,我们将按照名为
dataR
的顺序修改该对象。没有复印件。在python中,要复制一个对象通常必须是显式的。

您能告诉我们原始的
dataR
是什么样子的吗?比如[{'col':'K2','quan':0},{'col':'K7','quan':3},{'col':'K11','quan':4}]它是从SQL读取的。这意味着什么:“…这是“col”键的相等值…”?是否要修改所有具有名为
'col'
的键的项?我已解决了此问题。如果数据['col']==项:,这对您有意义吗?如果将其计算为
True
,则此数据结构将无限嵌套。并非所有数据['col']==项将更改的元素。只有第一个找到的元素会改变。@彼得伍德我想了解python的工作风格。首先,您的代码正在工作。我以前也是这样想的。但在“first_row=next(如果行['col']==item的话,数据r中的行对应于行)”中,在传输到第一行之后,数据r是如何变化的。下一个返回是特殊类型的变量吗?dataR和第一行之间的连接是否由copy保证?@Ev.Kounis
来自
数据
数据
来自
数据
@PeterWood哦,我错过了……谢谢