首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当打印和分配变量时,数据是不同的。

当打印和分配变量时,数据是不同的。
EN

Stack Overflow用户
提问于 2022-01-09 19:48:30
回答 2查看 36关注 0票数 0

我正在遍历一个获取两个数据键的json数组,displayName和currency。如果我打印数据,它会打印正确的数据,但当我将其赋值为变量时,数据将与打印的数据不同。

代码语言:javascript
运行
复制
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

现在,当我打印数据时,它会打印正确的数据,但是当我将它赋值给一个变量时,它不会。我做错了什么?

终端打印大亚号时,前两行代码

代码语言:javascript
运行
复制
30
gggymm
151
arturo_544
40
megan3308
37
ryunjin_98
241
xxpainlovexx
129
ヤン얀
18
leominakata
16
jairock08
11
antiheroe00
6

当将数据连接到变量并打印它时,终端

代码语言:javascript
运行
复制
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
EN

回答 2

Stack Overflow用户

发布于 2022-01-09 19:59:14

从示例输入和输出来看,您的问题并不完全清楚,但我假设您是在询问为什么数组中的条目即使在为user分配了新值之后也不会改变。您的代码意味着您希望user成为user dict的显示名称键,下面是我的解释:

for循环中的user变量存储一个值。这听起来很明显,但是简单性有一个问题:变量存储数组元素的值,而不是元素本身。

因此,当您将一个值赋值给变量user时,它不会更新数组本身。它只更新循环主体其余部分的变量user的值,在下一次迭代中变量user被更改为下一个数组元素的值。

解决办法是:

代码语言:javascript
运行
复制
user_data[user] = user_data[user]['displayName']

这将改变数组元素本身。

票数 0
EN

Stack Overflow用户

发布于 2022-01-09 20:13:31

没有看到你的数据是如何组织的,我不能做太多的事情来帮助你。

但据我所知,这可能有助于解决问题。

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
for x in data['userData']:
    name = x.get('displayName')
    currency = x.get('currency')

    print(name)
    print(currency)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70644921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档