我试图将有序的dict修剪为最后的x项。
我有以下代码,它有效,但似乎不是pythonic。
有更好的方法吗?
import collections
d = collections.OrderedDict()
# SNIP: POPULATE DICT HERE!
d = collections.OrderedDict(d.items()[-3:])
答案 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对象,也不必查看键或项目。