在python字典中提取第n个键?

时间:2013-06-07 06:10:24

标签: python performance dictionary

给定python字典和整数n,我需要访问n密钥。我需要在我的项目中反复多次这样做。

我写了一个函数来执行此操作:

def ix(self,dict,n):
    count=0
    for i in sorted(dict.keys()):
        if n==count:
            return i
        else:
            count+=1

但问题是,如果字典很大,重复使用时间会增加时间。

有一种有效的方法吗?

3 个答案:

答案 0 :(得分:8)

我想你想做这样的事情,但因为字典没有任何顺序所以dic.keys中的键顺序可以是任何东西:

def ix(self, dic, n): #don't use dict as  a variable name
   try:
       return list(dic)[n] # or sorted(dic)[n] if you want the keys to be sorted
   except IndexError:
       print 'not enough keys'

答案 1 :(得分:7)

dict.keys()会返回一个列表,所以您需要做的就是dict.keys()[n]

但是,字典是一个无序集合,所以第n个元素在这个上下文中没有任何意义

答案 2 :(得分:2)

对于那些想要避免仅为了访问第n个元素而创建新的临时列表的人,我建议使用迭代器。

from itertools import islice
def nth_key(dct, n):
    it = iter(dct)
    # Consume n elements.
    next(islice(it, n, n), None) 
    # Return the value at the current position.
    # This raises StopIteration if n is beyond the limits.
    # Use next(it, None) to suppress that exception.
    return next(it)

与非常大的字典相比,这比将键首先转换为临时列表然后访问其第n个元素要快得多。