python - 字典中任意选择一个键,无需迭代

标签 python dictionary

我只是想确保在Python字典中没有办法只获取一个键(没有特定的质量或与某个值的关系),而是进行迭代。据我所知,您必须通过循环浏览整个字典来列出它们。像这样的事情:

list_keys=[k for k in dic.keys()]

问题是,如果字典不为空,我只需要一个任意键并且不关心其余的。我想除了创建一个长列表来随机获取 key 之外,迭代一个长字典是一个很大的开销,不是吗? 有人可以指出更好的技巧吗?

谢谢

最佳答案

这里的很多答案都会产生一个随机 key ,但最初的问题要求一个任意 key 。这两者之间有很大区别。随机性有一些数学/统计保证。

Python 字典按插入顺序排序。所以,是的,访问任意 key 需要迭代。但对于单个任意键,我们不需要迭代整个字典。内置函数 nextiter 在这里很有用:

key = next(iter(mapping))

内置的 iter 在映射中的键上创建一个迭代器。迭代顺序将是插入顺序。 next 内置函数返回迭代器中的第一项。对于任意键,不需要迭代整个映射。

如果您最终要从映射中删除键,则可以使用 dict.popitem。这是文档字符串:

D.popitem() -> (k, v), remove and return some (key, value) pair as a 2-tuple;
but raise KeyError if D is empty.

关于python - 字典中任意选择一个键,无需迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37942550/

相关文章:

python - docker-compose 不使用 Flask 设置环境变量

python - 烦人的 Twisted Python 问题

java - java中的映射键值对未正确获取

python - 如何递归获取 python 包中的所有子模块?

python - 可以使用 jira-python 读出搜索过滤器

python - 如何从 Python 脚本在终端中执行命令?

python - 从字典的列表值中删除 'nan',python

c - 将无符号 16 位整数存储到文件的最有效方法

Python - 过滤字典 JSON 响应以仅发回两个值或转换为字符串?

python - 使用行工厂将字典插入 SQLite 的 native 方法,如果可能的话,使用自动增长的列数