【问题标题】:I need to parse json file 1 key 1 value我需要解析 json 文件 1 键 1 值
【发布时间】:2020-12-25 21:28:07
【问题描述】:

我有一个 json 文件

{
"35673": [
        "234",
        "357",
        "123"
    ],
    "34566": [
        "333",
        "456",
        "789"
    ]
}

我将json解析为python字典格式1键存储多个值

'35673': ['234','357','123'],
 '34566': ['333','456','789].

如何解析字典中的json文件格式1键1值?

'35673':'234'
'35673':'357'
...
'34566':'333'
'34566':'456'

【问题讨论】:

  • 如果我正确理解您的问题,您的字典中不能有重复的键。按照这种逻辑,当访问特定键时,它不知道要获取哪个值..
  • @Diggy 提到的。字典中的每个键都必须是唯一的。也许您可能想要创建键的元组和相应列表的各个值?
  • 如果您向我们展示进行解析的代码会有所帮助。
  • 每个键值必须是唯一的。值的键不能相同
  • 最后,我需要以 1 key 1 value 的形式在 greenplum 中获取一个表,因为它可以通过 python 从结果字典中完成? '35673': ['234','357','123'], '34566': ['333','456','789].

标签: python json parsing


【解决方案1】:

很遗憾,您不能这样做。每个键都应该是唯一的。您不能为该值使用相同的键。但是,您可以像这样访问每个值: 例如,如果您想访问456。你可以这样: 先读取json文件:

import json
with open('data.json') as f:
  data = json.load(f)

所以为了阅读456,你可以说print(data["34566"]),这将打印出:['333','456','789]。然后因为我想访问456,这是第一个索引(从0开始计数)。我不得不这样说: print(data["34566"][1])。这打印出 456。

另一个例子: 假设我想打印123。我需要首先查看哪个键包含列表(在我们的例子中,它的35673)。然后,当我们说print(data["35673"])。我们得到['234','357','123']。我们可以访问 123(0th element)print(data["35673"][0])。 基本上在 python 中,一个值不能有相同的键。即使你这样做(例如):

aDict = {
"hello":"bye",
"hello":"foo"

}

当你说print(aDict["hello"]) 时,它会打印出最后一个具有hello 键的元素。所以它会打印"foo"

【讨论】:

  • 感谢您的回答。最后,我需要以 1 key 1 value 的形式在 greenplum 中获取一个表,因为它可以通过 python 从结果字典中完成?
  • 抱歉,我不确定。
【解决方案2】:
for key in data:
    for i in range(len(data.get(key))):
        print(key, data.get(key)[i])

很简单

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-14
    • 1970-01-01
    • 2017-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    相关资源
    最近更新 更多