【问题标题】:Make a list of first item in every element of a dictionary列出字典每个元素中的第一项
【发布时间】:2020-10-14 22:22:56
【问题描述】:

我正在使用带有导入的文件中的字典。这是字典:

[{'id': 76001,
  'full_name': 'Alaa Abdelnaby',
  'first_name': 'Alaa',
  'last_name': 'Abdelnaby',
  'is_active': False},
 {'id': 76002,
  'full_name': 'Zaid Abdul-Aziz',
  'first_name': 'Zaid',
  'last_name': 'Abdul-Aziz',
  'is_active': False},
 {'id': 76003,
  'full_name': 'Kareem Abdul-Jabbar',
  'first_name': 'Kareem',
  'last_name': 'Abdul-Jabbar',
  'is_active': False}]

我想要做的是从所有 ID 中获取一个列表:

player_ids = [76001,76002, 76003]

我试过了:

player_ids = []
for i in player_dict:
    player_ids.append(player_dict[i]['id'])

但我得到了错误

TypeError: 列表索引必须是整数或切片,而不是字典

所以我知道“我”不是地方,而是我在字典中调用的实际项目?但根据我所阅读的内容,我无法理解这一点。

【问题讨论】:

  • 当您执行for i in player_dict 时,i 是列表中的每个元素而不是索引。
  • 这能回答你的问题吗? Converting Dictionary to List?

标签: python list loops


【解决方案1】:

执行此操作的 Pythonic 方法是使用列表推导式。例如:

player_ids = [dict['id'] for dict in player_dict]

这基本上会遍历 player_dict 中的所有字典,在您的情况下,这实际上是一个列表,并且对于每个字典都会获取带有键 'id' 的项目。

【讨论】:

  • 我收到错误 'TypeError: list indices must be integers or slices, not dict' >
【解决方案2】:

您可以尝试列表理解:

>>> [d['id'] for d in my_list]
[76001, 76002, 76003]

【讨论】:

    【解决方案3】:

    以下是如何使用列表推导式:

    player_dict = [{'id': 76001,
                   'full_name': 'Alaa Abdelnaby',
                   'first_name': 'Alaa',
                   'last_name': 'Abdelnaby',
                   'is_active': False},
                  {'id': 76002,
                   'full_name': 'Zaid Abdul-Aziz',
                   'first_name': 'Zaid',
                   'last_name': 'Abdul-Aziz',
                   'is_active': False},
                  {'id': 76003,
                   'full_name': 'Kareem Abdul-Jabbar',
                   'first_name': 'Kareem',
                   'last_name': 'Abdul-Jabbar',
                   'is_active': False}]
    
    player_ids = [d['id'] for d in player_dict]
    
    print(player_ids)
    

    输出:

    [76001, 76002, 76003]
    

    【讨论】:

      【解决方案4】:

      只是追加

        player_ids.append(i['id'])
      

      【讨论】:

      • 我鼓励您在回答中提供更多解释。你明白为什么会出现最初的问题吗?我相信你知道,所以分享你的见解。
      猜你喜欢
      • 2014-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-17
      • 1970-01-01
      • 2021-07-16
      • 2012-12-08
      • 2021-09-14
      相关资源
      最近更新 更多