【问题标题】:How to extract info from the dictionaries within a list?如何从列表中的字典中提取信息?
【发布时间】:2020-08-02 15:42:03
【问题描述】:

我是 Python 新手,试图从一个 json 文件中收集数据,该文件由一个包含字典内信息的列表组成,如下所示。如何从中提取“计数”数据? (不使用列表理解)

{
   "stats":[
      {
        "name":"Ron",
        "count":98
      },
      {
        "name":"Sandy",
        "count":89
      },
      {
        "name":"Sam",
        "count":77
      }
   ]
}

【问题讨论】:

  • 请发布预期输出
  • 你为什么不使用简单的for循环?
  • 不使用列表理解”,为什么?

标签: python json list dictionary extract


【解决方案1】:

使用stats 键索引列表,然后遍历它

data = {
   "stats":[
      {
        "name":"Ron",
        "count":98
      },
      {
        "name":"Sandy",
        "count":89
      },
      {
        "name":"Sam",
        "count":77
      }
   ]
}
for stat in data['stats']:
    count = stat['count']

【讨论】:

  • 嗯,这不是要告诉我们“统计”中有多少字典吗?我想从“count”中收集数值进行计算
【解决方案2】:

考虑存储在变量源中的字典数据。

    source = {
   "stats":[
      {
        "name":"Ron",
        "count":98
      },
      {
        "name":"Sandy",
        "count":89
      },
      {
        "name":"Sam",
        "count":77
      }
   ]
}

现在要访问“stats”中的计数字段,我们使用索引。 例如,要查看“Ron”的计数,您可以这样写:

print(source['stats'][0]['count'])

这将导致 98

同样,对于“Sam”,它会是

print(source['stats'][2]['count'])

结果将是 77

简而言之,我们首先索引字典的键,然后是数组位置,然后提供您想要数据的数组的字段。 我希望它有所帮助。

【讨论】:

    【解决方案3】:

    只需 append 所有这些值进行计算:

    count_values = []
    
    for dic in data['stats']:
        count_values.append(dic['count'])
    
    # Do anything with count_values
    print(count_values)
    

    【讨论】:

      【解决方案4】:

      根据Zen of Python,“简单​​胜于复杂。”

      因此,列表推导实际上是提取所需信息并仍可用于进一步处理(以计数值列表的形式)的最佳方式。

      d = <your dict-list>
      count_data_list = [ x['count'] for x in d['stats'] ]
      

      如果不是,并且您的意图是在提取数据时处理“计数”数据,我建议使用 for 循环:

      d = <your dict-list>
      for x in d['stats']:
        count_data = x['count']
        <process "count_data">
      

      【讨论】:

        【解决方案5】:

        使用map 函数将在一行中完成

        >>> result = list(map(lambda x: x['count'], data['stats']))
        [98, 89, 77]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-09-23
          • 2021-06-21
          • 2022-11-12
          • 1970-01-01
          • 1970-01-01
          • 2019-06-14
          • 1970-01-01
          相关资源
          最近更新 更多