【问题标题】:Problems while parsing a nested json/list in python3?在 python3 中解析嵌套的 json/list 时出现问题?
【发布时间】:2017-01-19 19:19:38
【问题描述】:

我有一个非常大的列表alist,其中有一个字典和一个嵌套列表,如下所示:

a_list = [{'A': [], 's': {'code': '0', 'credits': '0', 'msg': 'OK'}},
 {'A': [{'dictionary': 'True',
    'item': 'pineapples',
    'id': '13',
    'score': '9.7899',
    'rollup': {'True': 'OK', 'Fiz': 'Yes'},
    'variant_list': [{'endp': '8', 'form': 'pineapple', 'register': '0'}]}], 'status': {'codecheck': '0', 'cred': '90809890', 'msg': 'OK'}},
......

{'A': [], 's': {'code': '0', 'credits': '0', 'msg': 'OK'}},
    ]

当且仅当存在于这样的列表中时,我如何提取提取 item 参数:

['NaN', 'pineapples', 'NaN']

我不明白如何解析它,因为它有一个非常嵌套的结构,我正在努力解决的主要问题是访问列表的每个元素,然后访问另一个列表并留下一个 NaN 字符串。

【问题讨论】:

  • 什么意思留下一个NaN字符串
  • 如果它存在于字符串中是什么意思?
  • @RomanPerekhrest 感谢您的帮助!正如您在a_list 的第一个和第三个元素中看到的那样,他们只有一个空列表{'A': [], 's': {'code': '0', 'credits': '0', 'msg': 'OK'}} 我想在那里输入一个NaN ,因为它有一个空列表。
  • @tooty44,是的,例如只需将 {'A': [], 's': {'code': '0', 'credits': '0', 'msg': 'OK'}}, 替换为 NaN

标签: python json python-3.x dictionary data-structures


【解决方案1】:

使用以下方法(列表理解):

a_list = [{'A': [], 's': {'code': '0', 'credits': '0', 'msg': 'OK'}},
          {'A': [{'dictionary': 'True',
                  'item': 'pineapples',
                  'id': '13',
                  'score': '9.7899',
                  'rollup': {'True': 'OK', 'Fiz': 'Yes'},
                  'variant_list': [{'endp': '8', 'form': 'pineapple', 'register': '0'}]}],
           'status': {'codecheck': '0', 'cred': '90809890', 'msg': 'OK'}},
          {'A': [], 's': {'code': '0', 'credits': '0', 'msg': 'OK'}},
          ]

result = ['NaN' if not len(o['A']) else o['A'][0]['item'] for o in a_list]
print(result)

输出:

['NaN', 'pineapples', 'NaN']

列表推导式提供了一种创建列表的简洁方式。常见的 应用程序将创建新列表,其中每个元素都是 应用于另一个序列的每个成员的一些操作或 可迭代,或创建满足 a 的那些元素的子序列 一定的条件。

某个条件,就你而言,是'NaN' if not len(o['A']) else o['A'][0]['item']

https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions

【讨论】:

  • 您能提供一些解释吗?...我不太了解列表理解。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-14
相关资源
最近更新 更多