【问题标题】:Python3 JSON parse with duplicate keys具有重复键的 Python3 JSON 解析
【发布时间】:2021-10-04 15:24:15
【问题描述】:

对不起新手问题,有这样的json响应;

import json

jsonObj = json.loads("""
{
  "data": [
    {
      "name_space": "name",
      "value": "Angelina"
    },
    {
      "name_space": "surname",
      "value": "Jolie"
    },
    {
      "name_space": "year",
      "value": "1975"
    }
  ]
}
""")

我目前可以这样解析

for meta in jsonObj['data']:
    if meta['name_space'] == 'name':
        print(meta['value'])
    if meta['name_space'] == 'surname':
        print(meta['value'])
    if meta['name_space'] == 'year':
        print(meta['value'])

我正在研究是否有不同的方法可以做到这一点并使代码看起来更简洁。

【问题讨论】:

  • 数据字典是否总是有“name_space”条目或“value”条目? “name_space”是否告诉您字典中还有哪些其他可用值?
  • 您要打印什么? for meta in jsonObj['data']: print(meta['value']) 将打印您在示例中打印的相同内容。如果您想要不同的东西,请在您的问题中加入。
  • 近~30个“name_space”或“value”数据字典和一些类似的,例如我想使用year值来获取1975

标签: json python-3.x parsing duplicates key-value


【解决方案1】:

clean_dict = {x['name_space']: x['value'] for x in jsonObj['data']} 会给你以下dict

{'name': 'Angelina', 'surname': 'Jolie', 'year': '1975'}

该代码使用x['name_space'] 值作为dict 中的新键。

那么你应该可以随心所欲地打印它,例如print(clean_dict.values())

【讨论】:

  • 是否可以使用'name_space' 值获得'value' 的值?
  • clean_dict['name'] 会给你"Angelina" 如果这就是你的意思。
  • 完美!谢谢你:)
猜你喜欢
  • 1970-01-01
  • 2017-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多