尝试从一系列字典中检索键时出现“类型错误:列表索引必须是整数或切片,而不是 str”
Posted
技术标签:
【中文标题】尝试从一系列字典中检索键时出现“类型错误:列表索引必须是整数或切片,而不是 str”【英文标题】:Getting ' TypeError: list indices must be integers or slices, not str' when trying to retrieve keys from series of dictionaries 【发布时间】: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 类型
【问题讨论】:
【参考方案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]
【讨论】:
以上是关于尝试从一系列字典中检索键时出现“类型错误:列表索引必须是整数或切片,而不是 str”的主要内容,如果未能解决你的问题,请参考以下文章
c#多键字典,用自己的可变类替换元组时出现“KeyNotFoundException”[重复]
为啥在 Vue js 中尝试从 firebase 检索令牌时出现错误?