【问题标题】:Getting ' TypeError: list indices must be integers or slices, not str' when trying to retrieve keys from series of dictionaries尝试从一系列字典中检索键时出现“类型错误:列表索引必须是整数或切片,而不是 str”
【发布时间】:2021-08-21 04:17:55
【问题描述】:

我正在尝试从包含字典的系列中获取键。 我的代码是:

a = [{'uid': 46}, {'uid': 47}]
print (a['uid'])

但这会抛出 ' TypeError: 列表索引必须是整数或切片,而不是 str'

我想要实现的是让这段代码工作:

ids = [a["id"] for a in df["driven"]]

理想情况下,这会给我 [46, 47]。

但我收到相同的 TypeError 消息。

df["driven"] 看起来类似于: [{'id': 46}, {'id': 47}] 并且是 pandas.series 类型

【问题讨论】:

    标签: python dictionary typeerror


    【解决方案1】:

    您的字典在一个列表中,您可以使用像a[0],a[1] 这样的索引从中获取元素。您实际上是先从列表中获取,然后是字典。

    a = [{'uid': 46}, {'uid': 47}]
    print ([val['uid'] for val in a])
    

    输出:

    [46,47]
    

    【讨论】:

      【解决方案2】:

      目前您正在尝试执行以下操作。

      lst = ['a','b','c']
      print(lst['a'])
      

      当索引一个字符串时,你必须并且应该只给出整数。虽然我知道你想做什么。下面的代码将遍历列表,然后在给定的字典中找到每个键的值。

      a = [{'uid': 46}, {'uid': 47}]
      print([dicts['uid'] for dicts in a])
      

      输出

      [46, 47]
      

      【讨论】:

      • 谢谢,是的,我确实意识到了这一点。它基本上是嵌套的,所以我需要做一层额外的取消嵌套。
      【解决方案3】:

      a是一个列表,没有像uid这样的str索引,你需要访问列表dict元素来获取uid 代码:

      a = [{'uid': 46}, {'uid': 47}]
      print([element["uid"] for element in a])
      

      结果:

      [46, 47]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-26
        • 1970-01-01
        • 2017-04-12
        • 2016-05-25
        • 2016-09-19
        • 2020-07-11
        相关资源
        最近更新 更多