我想查看最近添加的有序字典的x个数字。到目前为止,我能想到的唯一方法是:
listLastKeys = orderedDict.keys()[-x:]
for key in listLastKeys:
#do stuff with orderedDict[key]
但是当有序词典已经知道它的顺序时,制作另一个列表并通过有序词典时,感觉多余而且有些浪费。是否有其他方法?谢谢!
答案 0 :(得分:5)
反向迭代dict并应用itertools.islice
:
from itertools import islice
for key in islice(reversed(your_ordered_dict), 5):
# do something with last 5 keys
答案 1 :(得分:0)
不是像你一样反转它,而是可以使用reversed()
以相反的顺序循环它。例如:
D = {0 : 'h', 1: 'i', 2:'j'}
x = 1
for key in reversed(D.keys()):
if x == key:
break
答案 2 :(得分:0)
您可以保留上次运行的字典中存在的键列表。
我不知道程序的确切语义,但这是一个检查新密钥的函数。
keys=[] #this list should be global
def checkNewKeys(myDict):
for key, item in myDict.iteritems():
if key not in keys:
#do what you want with new keys
keys.append(key)
这基本上可以跟踪整个程序运行中字典中的内容,而无需每次都创建新列表。