修剪有序的字典到最后的x项

时间:2016-06-02 02:07:57

标签: python python-2.7

我试图将有序的dict修剪为最后的x项。

我有以下代码,它有效,但似乎不是pythonic。

有更好的方法吗?

import collections
d = collections.OrderedDict()
# SNIP: POPULATE DICT HERE!
d = collections.OrderedDict(d.items()[-3:])

2 个答案:

答案 0 :(得分:1)

如果您希望修改字典,那么您可以弹出违规项目:

for k in d.keys()[:-3]:
    d.pop(k)

(在python 3上,您需要将.keys()转换为列表。)

如果你想创建一个新的OrderedDict,那么它不清楚是什么" unpythonic"关于你目前的做法。

答案 1 :(得分:1)

这有点快:

for k in range(len(d) - x) : data.popitem(last = False)

虽然不确定它是多少蟒蛇。

好处包括不必强制创建新的OrderedDict对象,也不必查看键或项目。