我正在遍历一个获取两个数据键的json数组,displayName和currency。如果我打印数据,它会打印正确的数据,但当我将其赋值为变量时,数据将与打印的数据不同。
import json
from firebotpy import firebot
def write(data):
f = open('data.txt', 'a')
f.write(f"{data}"'\n')
with open('data.json', encoding= 'utf-8') as f:
data = json.load(f)
user_data = data['userData']
x = user_data.keys()
for user in x:
try:
print(user_data[user]['displayName'])
print(user_data[user]['currency'])
user = user_data[user]['displayName']
value = user_data[user]['currency']
print(user)
print(value)
except:
pass现在,当我打印数据时,它会打印正确的数据,但是当我将它赋值给一个变量时,它不会。我做错了什么?
终端打印大亚号时,前两行代码
30
gggymm
151
arturo_544
40
megan3308
37
ryunjin_98
241
xxpainlovexx
129
ヤン얀
18
leominakata
16
jairock08
11
antiheroe00
6当将数据连接到变量并打印它时,终端
2
spawned55
2
spawned56
2
spawned57
2
spawned58
2
spawned59
2
spawned60
2
spawned61
2
spawned62
2
spawned63
2
spawned64
2
spawned65
2
spawned66
2
spawned67
2
spawned68
2
spawned69
2发布于 2022-01-09 19:59:14
从示例输入和输出来看,您的问题并不完全清楚,但我假设您是在询问为什么数组中的条目即使在为user分配了新值之后也不会改变。您的代码意味着您希望user成为user dict的显示名称键,下面是我的解释:
for循环中的user变量存储一个值。这听起来很明显,但是简单性有一个问题:变量存储数组元素的值,而不是元素本身。
因此,当您将一个值赋值给变量user时,它不会更新数组本身。它只更新循环主体其余部分的变量user的值,在下一次迭代中变量user被更改为下一个数组元素的值。
解决办法是:
user_data[user] = user_data[user]['displayName']这将改变数组元素本身。
发布于 2022-01-09 20:13:31
没有看到你的数据是如何组织的,我不能做太多的事情来帮助你。
但据我所知,这可能有助于解决问题。
data = {'userData': [{'displayName': 'Test1', 'currency': 50}, {'displayName': 'Test2', 'currency': 65}]}
for x in data['userData']:
for key, value in x.items():
try:
# use key and value variables how ever you like here
print(key)
print(value)
except:
pass或
for x in data['userData']:
name = x.get('displayName')
currency = x.get('currency')
print(name)
print(currency)https://stackoverflow.com/questions/70644921
复制相似问题