从字典中获取单个密钥的最佳方法是什么?

时间:2017-09-04 18:27:43

标签: python dictionary

拥有一个python字典并且知道它只由一个键/值对组成,检索该单个/唯一项目的最佳方法是什么?

到目前为止,我知道我可以使用以下两种方法之一:

  1. list(mydict.keys())[0]

  2. next(iter(mydict))

  3. 据我了解,list表现比iter表现差,所以后一种方法应该更好,对吧?哪种方式最好?有什么比我指出的两种方式更好的东西?请告诉我。

2 个答案:

答案 0 :(得分:6)

  

哪种方式最好?

我建议使用next(iter(d))而非list(mydict.keys())[0]从字典中检索密钥。如您所料,在效率方面使用next(iter(d)) 更多更好。

通过计时每种方法可以观察效率差异:

>>> import timeit
>>> setup='from string import ascii_letters; d = {k: v for k, v in enumerate(ascii_letters)}'
>>> timeit.timeit(stmt='list(d.keys())[0]', setup=setup)
1.0895291733333334
>>> timeit.timeit(stmt='next(iter(d))', setup=setup)
0.2682935466666656

随着字典大小的增加,使用next(iter(d))而不是list(d.keys())[0]的选择变得非常非常

>>> setup='d = {k: v for k, v in enumerate(range(500, 10000))}'
>>> timeit.timeit(stmt='list(d.keys())[0]', setup=setup)
98.52252842666667
>>> timeit.timeit(stmt='next(iter(d))', setup=setup)
0.2720192000000452

next(iter(d))list(d.keys())[0]执行得更好,主要是因为它避免在内存中创建所有字典键的潜在巨大列表,而它实际上只需要第一个元素。

答案 1 :(得分:1)

要从字典中获取“第一个”键值对,您必须使用OrderedDict

from collections import OrderedDict
d = OrderedDict()

#add items as normal

first_key = [a for a, b in d.items()][0]
print(d[first_key])