如何在 Python 中将字典键作为列表获取 您所在的位置:网站首页 python取字典中值的键 如何在 Python 中将字典键作为列表获取

如何在 Python 中将字典键作为列表获取

2023-04-06 18:43| 来源: 网络整理| 查看: 265

dict.keys() 获取 Python 字典键 循环获取 Python 字典键 列表推导式以获取 Python 字典键 Python 字典解包*运算符获取键值 字典键作为列表获取不同方法的性能比较

我们在本教程中将来介绍如何将字典中的键值以列表形式读出。

我们有几种方法可以实现它,每种方法都有不同的性能特征。

dict.keys() 获取 Python 字典键

dict.keys() 函数返回 dict_keys-字典键的可迭代表现。

>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'} >>> state_capitals.keys() dict_keys(['California', 'Pennsylvania', 'Texas'])

你可以对 dict_keys 直接进行迭代,而无需将其转换为列表。

>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'} >>> for state in state_capitals.keys(): ... print(state) ... California Pennsylvania Texas

例如,如果你需要严格按照列表来处理字典键,例如,如果你希望能够使用索引来读取序列中的特定键,则应首先转换 dict_keys 为列表。

>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'} >>> list(state_capitals.keys()) ['California', 'Pennsylvania', 'Texas']

请注意,如果要获取键值作为列表,则调用 dict.keys() 是可选的。由于 Python 字典可在其键上进行迭代,因此你可以将字典本身传递给列表构造函数。

>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'} >>> list(state_capitals) ['California', 'Pennsylvania', 'Texas'] 循环获取 Python 字典键

Python 中字典的一个特殊特性是,当你迭代它们时,便会迭代它们的键。因此,你可以通过迭代来简单地得到所有字典键。

>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'} >>> keys = [] >>> for key im state_capitals: ... keys.append(key) ... >>> keys ['California', 'Pennsylvania', 'Texas'] 列表推导式以获取 Python 字典键

使用循环的语法改进可以使用 Python 的列表推导式。通过列表推导,你可以将以上循环压缩为单行。

>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'} >>> keys = [key for key in state_capitals] >>> keys ['California', 'Pennsylvania', 'Texas'] Python 字典解包*运算符获取键值

从 Python 3.5 开始,我们可以使用 unpack *运算符来得到字典键。PEP 448-中引入了此功能。

>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'} >>> keys = [*state_capitals] >>> keys ['California', 'Pennsylvania', 'Texas']

这种方法的好处是,你可以将字典键解包到列表之外的其他集合中,例如元组或集合。

>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'} >>> keys_tuple = *state_capitals, >>> keys_tuple ('California', 'Pennsylvania', 'Texas') >>> keys_set = {*state_capitals} >>> keys_set {'California', 'Pennsylvania', 'Texas'} 字典键作为列表获取不同方法的性能比较

上述每种方法的运行时性能都各不相同。

>>> from timeit import timeit >>> timeit("list(state_capitals.keys())", setup="state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}") 0.25394885599962436 >>> timeit("list(state_capitals)", setup="state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}") 0.17995373999929143 >>> timeit("for key in state_capitals: keys.append(key)", setup="keys = []; state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}") 0.25294865500018204 >>> timeit("[key for key in state_capitals]", setup="state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}") 0.2447525150000729 >>> timeit("[*state_capitals]", setup="state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}") 0.0962776809992647

从上述时间来看,* 运算符是最快的。

我们推荐优先使用它,除非你有充分的理由采用其他方法。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有