【发布时间】:2019-01-20 12:11:30
【问题描述】:
我有一些从 API 收集字典对象列表的代码。字典键之一是在操作中看到规则的 last_timestamp。我希望能够按这个值排序,但是,我使用了常用的方法来排序,但都不起作用。
a = sorted(all_rules, key=itemgetter('last_timestamp'))
返回错误
a = sorted(all_rules, key=itemgetter('last_timestamp'))
TypeError: list indices must be integers, not str
all_rules 是字典列表。
【问题讨论】:
-
该错误消息使您看起来好像没有字典列表;至少你试图传递给你的 itemgetter 的一件事是一个列表。我怀疑在创建minimal reproducible example 的过程中,您会看到您的列表中有一个列表。
-
我怀疑问题在于时间戳是真正的时间戳,即
2018-12-08T15:00:00Z,而不是真正的整数。我想我需要找到一种方法将即时时间戳转换为 TimeStamp 的 Int 表示,然后排序并返回规则的 ID。 -
您无需怀疑任何事情——错误消息会告诉您问题所在。您正在尝试使用字符串索引到列表中。请编辑您的问题以包含minimal reproducible example,并包含
print(type(all_rules), set(type(obj) for obj in all_rules))的结果。
标签: python json python-2.7 list dictionary