按时间戳字段对词典列表进行排序。

时间:2018-08-13 17:40:53

标签: python json python-2.7 list dictionary

我有一些代码可以从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是词典列表。

1 个答案:

答案 0 :(得分:0)

我尝试了以下方法,但效果很好:

all_rules = [{'last_timestamp': 1}, {'last_timestamp': 0}, {'last_timestamp': 4}]

在您的示例中,问题可能在于all_rules是列表的集合,而不是字典的集合。在这种情况下,sorted尝试将itemgetter('last_timestamp')应用于每个列表,从而引发TypeError

如果您应用相同的逻辑,其中all_rules是词典的集合,则它将返回一个按其'last_timestamp'值排序的词典列表,只要该值是可比较的(即具有{ {1}}方法已定义),这是时间戳字符串必须满足的要求。