【问题标题】:I can't do anything with python dict? [closed]我不能用 python dict 做任何事情? [关闭]
【发布时间】:2021-03-10 17:49:50
【问题描述】:

我真的遇到了一个小问题。

diccionario_antiguos = {}
            
    data = open('Currency_price.json')
    for i in data:
        diccionario_antiguos = i

Currency_price.json 是一个包含如下字典的文件:

{"Dolar": ["80,25", "86,25"], "Euro": ["96,59", "97,04"]}

键是货币,值是带有价格的列表。

我的问题是,在我将所有信息传递给 diccionario_antiguos 后,我无法操作其中的任何内容。

如果我这样做:

print(diccionario_antiguos.get('Dolar')

我得到'str'对象没有属性'get'

如果我这样做

print(diccionario_antiguos['Dolar']

我得到的字符串索引必须是整数

然后我说“哦,我应该让你使用整数”,所以我做了:

print(diccionario_antiguos[0])

那里没有例外,但我得到 [](当我打印整个字典并且我知道数据在那里时)。

我不知道发生了什么,因为如果我将此方法应用于任何字典,它们都会起作用,即使键是字符串。

有什么解决办法吗?谢谢!

【问题讨论】:

  • 请提供预期的MRE。显示中间结果与预期结果的偏差。我们应该能够将您的代码块粘贴到文件中,运行它并重现您的问题。这也让我们可以在您的上下文中测试任何建议。
  • 你为什么要循环播放?你为什么要分配diccionario_antiguos = i?为什么这段代码甚至不涉及 JSON 解析器?
  • @user2357112supportsMonica 我正在分配 diccionario_antiguos = i 因为这是我知道获取 dict 数据的唯一原因,而且它有效,有没有更好的方法?而且,json 解析器到底是什么?谢谢你的回答!
  • @Prune 我刚刚做了以下测试: diccionario_antiguos = {'Hola':123.4} print(diccionario_antiguos['Hola']) data = open('Currency_price.json') for i in data: diccionario_antiguos = i print(diccionario_antiguos['Dolar']) 对不起,混乱...如您所见,第一个 dict 工作得很好,而第二个结构相同,却没有。我想知道为什么,因为我看不到原因。谢谢你的回答!
  • 再次,用工作代码更新你的问题——正如你所看到的,一个注释not正确地代表了代码。另请注意,我们没有拥有您的 JSON 文件。除非您已将问题与加载隔离开来,否则您应该从帖子中删除阅读内容,并在程序中简单地硬编码一些示例行。

标签: python json dictionary for-loop


【解决方案1】:

这里是 json 和 dict 的代码...

import json
j = '''{"Dolar": ["80,25", "86,25"], "Euro": ["96,59", "97,04"]} '''
jDict = json.loads(j)
print(jDict)
print("Dolar List", jDict['Dolar'])
print("Euro  List", jDict['Euro'])

# Write Dict to json file
fn = 'Currency_price.json'
with open(fn, 'w') as fio:
    json.dump(jDict, fio)

# Read Json file
with open(fn, 'r') as fio:
    j2Dict = json.load(fio)

print("\n-------\n")

print(j2Dict)
print("Dolar List", j2Dict['Dolar'])
print("Euro  List", j2Dict['Euro'])

输出

{'Dolar': ['80,25', '86,25'], 'Euro': ['96,59', '97,04']}
Dolar List ['80,25', '86,25']
Euro  List ['96,59', '97,04']

-------

{'Dolar': ['80,25', '86,25'], 'Euro': ['96,59', '97,04']}
Dolar List ['80,25', '86,25']
Euro  List ['96,59', '97,04']

【讨论】:

  • 正是我要找的东西,所以它与我打开 json 文件的方式有关,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-11
相关资源
最近更新 更多