尝试将元素添加到循环中的列表"for"每次都会覆盖相同的值



考虑到以下内容:

data = response.json()
for result in data['results']:
for field in result['custom_fields']:
if field['id'] == some_id_field:
print(field['value'])

的回报:

11111
22222
33333
44444
55555
66666
77777

但是,我想将输出作为列表存储在一个单独的变量中,以便稍后使用,所以我这样做:

data = response.json()
for result in data['results']:
for field in result['custom_fields']:
if field['id'] == some_id_field:
var_for_later = field['value']
var_for_later = var_for_later.splitlines()
var_for_later = var_for_later

但是,它只返回数组中的第一个元素:

11111

代替['11111','22222','33333','44444','55555','66666','77777']

为什么field['value']现在只存储第一个元素时分配给一个变量?

您正在将值分配给变量,而不是将其附加到列表中。为了在列表中存储值,您需要更新代码以在for循环之前创建一个空列表,并通过使用list.append()方法将field['value']附加到列表中。因此,您的代码将变成:

data = response.json()
my_list = []  # creating empty list
for result in data['results']:
for field in result['custom_fields']:
if field['id'] == some_id_field:
my_list.append(field['value'])  # Appending items to the list

,它将返回您所需格式的my_listas列表,如:

[11111, 22222, 33333, 44444, 55555, 66666, 77777]

试试这个:

yourdata = []
data = response.json()
for result in data['results']:
for field in result['custom_fields']:
if field['id'] == some_id_field:
yourdata.append(field['value'])
print(yourdata)

我猜你对Python很陌生,所以我建议你看一些教程或在互联网上搜索文档。例如w3schools

为什么你的代码不能工作?

看看这行:var_for_later = var_for_later它什么也没做。此外,您可以在每次迭代中覆盖var_for_later。因此,从技术上讲,它最后应该返回'77777'而不是'11111'。

您确定这是对应于此代码的输出吗?

顺便说一句,你真的有多个相同id的条目吗?

早些时候你一次打印一个字段,但后来你开始在每个循环中替换相同的变量,这就是为什么它只有一个值。var_for_later只存在于该for循环中。相反,在循环之外创建最终列表,并在每次迭代中附加值。

out = []
data = response.json()
for result in data['results']:
for field in result['custom_fields']:
if field['id'] == some_id_field:
out.append(field['value'])

最新更新