Python 如何在列表或元组中获取字典的键?

Python 如何在列表或元组中获取字典的键?,python,python-2.7,python-3.x,dictionary,Python,Python 2.7,Python 3.x,Dictionary,一个口授式的 c = {1:'a', 2:'b', 3:'c'} 我需要把钥匙放在清单上。 我写 但那是行不通的。 我怎么能做到? 我可以迭代字典的键吗? 如果我写,c.key()需要返回的是dict c的键。但这并不能做到这一点。为什么?在Python3中,c.keys()返回一个dict\u keys对象,因此为了确保您有一个列表,您应该执行以下操作: x = list(c.keys()) 在Python3中,强制转换是必要的,因为对象是不可下标的 在python 2中,x=c.keys

一个口授式的

c = {1:'a', 2:'b', 3:'c'}
我需要把钥匙放在清单上。 我写

但那是行不通的。 我怎么能做到? 我可以迭代字典的键吗? 如果我写,
c.key()
需要返回的是
dict c
的键。但这并不能做到这一点。为什么?

在Python3中,
c.keys()
返回一个
dict\u keys
对象,因此为了确保您有一个列表,您应该执行以下操作:

x = list(c.keys())
在Python3中,强制转换是必要的,因为对象是不可下标的

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

更新:默认情况下,当您调用字典或尝试直接循环字典时,字典会返回其键,因此

x = list(c) # list of keys

t = tuple(c) # tuple of keys
将在python 2和python 3中返回键的列表和元组在python 3中,
c.keys()
返回一个
dict_keys
对象,因此为了确保您有一个列表,您应该执行以下操作:

x = list(c.keys())
在Python3中,强制转换是必要的,因为对象是不可下标的

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

更新:默认情况下,当您调用字典或尝试直接循环字典时,字典会返回其键,因此

x = list(c) # list of keys

t = tuple(c) # tuple of keys

将返回Python2和Python3中键的列表和元组

您是否尝试过
x=c.keys()
?您是否尝试过
x=c.keys()
?嘎,就在我认为我了解python的时候,他们开始创建一个新的对象类型-u-如果您打算
列表
-无论如何,请删除
.keys()
<代码>列表(c)
将始终为您提供
列表
中的
,而Py2和Py3都没有额外的工作,因为
dict
是它们键的可编辑项。@J.J:这是一个很大的改进;keys和items视图设置为,并且在所有情况下,它们都是支持字典上的可编辑视图,因此可以避免创建不必要的
dict
内容的浅拷贝。唯一会造成伤害的情况是,如果您在运行过程中迭代和变异
dict
;如果添加或删除键并需要继续迭代,则需要在迭代到显式浅复制之前将视图对象包装在
列表中。gah,就在我认为我了解python的时候,他们继续创建一个新的对象类型-\u-如果要
列表
-ify,请删除
.keys()
<代码>列表(c)
将始终为您提供
列表
中的
,而Py2和Py3都没有额外的工作,因为
dict
是它们键的可编辑项。@J.J:这是一个很大的改进;keys和items视图设置为,并且在所有情况下,它们都是支持字典上的可编辑视图,因此可以避免创建不必要的
dict
内容的浅拷贝。唯一会造成伤害的情况是,如果您在运行过程中迭代和变异
dict
;如果添加或删除键并需要继续迭代,则需要在迭代到显式浅复制之前将视图对象包装在
列表中。