【问题标题】:How to get key of a dictionary in a list or tuple?如何在列表或元组中获取字典的键?
【发布时间】:2016-06-07 14:14:03
【问题描述】:

类似的字典,

c = {1:'a', 2:'b', 3:'c'}

我需要获取 list 中的键。 我写,

x = [c.key()]

但这不起作用。 我怎么能这样做? 我可以遍历字典的键吗? 如果我写,c.key() 需要返回的是dict c 的键。但这并没有做到这一点。为什么?

【问题讨论】:

  • 你试过x=c.keys() 吗?

标签: python python-2.7 python-3.x dictionary


【解决方案1】:

在 python 3 中,c.keys() 返回一个 dict_keys 对象,所以要确保你有一个列表,你应该这样做:

x = list(c.keys())

强制转换 在 python 3 中是必要的,因为 dict_keys 对象不可下标

在 python 2 中,x = c.keys() 将返回一个list

更新:默认情况下,当您在字典上调用iterator 或尝试直接循环它们时,字典会返回它们的键,所以

x = list(c) # list of keys

t = tuple(c) # tuple of keys

将返回 python 2 和 3 中键的列表和元组

【讨论】:

  • 呸,就在我以为我知道 python 的时候,他们继续做一个新的对象类型-_-
  • 如果你还是要去list-ify,放弃.keys(); list(c) 将始终为您提供keys 中的list,而无需对 Py2 和 Py3 进行额外的工作,因为 dicts 是其键的可迭代对象。
  • @J.J:这是一个很大的改进;键和项目视图是类似集合的,并且在所有情况下它们都是支持字典上的可迭代视图,因此您可以避免创建dict 内容的不必要的浅表副本。只有当你在迭代和改变dict时才会感到痛苦;如果您添加或删除键并需要继续迭代,则需要在迭代到显式浅拷贝之前将视图对象包装在 list 中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-19
  • 1970-01-01
  • 2022-12-07
  • 2019-11-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多