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

o2g1uqev  于 2023-02-18  发布在  Python
关注(0)|答案(4)|浏览(247)

给定一个python字典和一个整数n,我需要访问n的th键,我需要在我的项目中多次重复这样做。
我写了一个函数来实现这个功能:

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

但问题是,如果字典很庞大,重复使用时时间复杂度会增加。
有没有有效的方法来做到这一点?

whlutmcx

whlutmcx1#

dict.keys()返回一个列表,因此您需要做的就是dict.keys()[n]
但是,字典是一个无序的集合,所以第n个元素在这个上下文中没有任何意义。
注意:python3中不支持索引dict.keys()

6vl6ewon

6vl6ewon2#

我猜你想做这样的事情,但字典没有任何顺序,所以在dict.keys中的键的顺序可以是任何:

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

chhkpiq43#

对于那些希望避免仅仅为了访问第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个元素相比,这对于非常大的字典来说要快得多。

ycggw6v2

ycggw6v24#

很多答案都提到字典是无序的,这不仅适用于python 3.6之前的版本,从python 3.7开始,字典实际上是有序的。

相关问题