python - 从字典中获取单个键的最佳方法?

标签 python dictionary

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

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

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

  2. 下一步(iter(mydict))

据我所知,list 的性能比 iter 差,所以后一种方法应该更好,对吧?哪些方式最好?有比我指出的两种方式更好的东西吗?请告诉我。

最佳答案

Which way is best?

我建议使用 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] 执行得更好,主要是因为它避免了创建一个潜在的巨大列表内存中的所有字典键,实际上只需要第一个元素。

关于python - 从字典中获取单个键的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46042430/

相关文章:

python - BeautifulSoup 和 urllib 从网站查找数据

Python:计算一个单词在文件中出现的次数

c++ - 将 map<string, pair> 传输到 vector

flutter - Flutter使用嵌套字典/ map

xml - 从值对象填充和访问数据

python - 如何从 C++ 执行 python

python - 如果元素以另一个列表中的元素结尾,则从列表中删除元素的结尾

python - 在 scipy.io.savemat 中以不同的数值数据格式保存 mat 文件

python - 连接同一字典中两个键的值

python - 字典列表删除半出现