从字典中选择一个键 Python
如何在循环中遍历一个字典并从中选择键呢?
比如说,我有一个这样的字典:{'hello':'world', 'hi':'there'}
。有没有办法用for
循环遍历这个字典,然后打印出hello
和hi
呢?
另外,有没有办法通过myDictionary.key[1]
来获取hi
这个值呢?
5 个回答
2
使用字典的名字作为序列可以得到所有的键:
>>> d={'hello':'world', 'hi':'there'}
>>> list(d)
['hi', 'hello']
所以 list({'hello':'world', 'hi':'there'})[1]
会返回键列表中的第1个元素。
不过,这样做的用处有限,因为字典是无序的。它们的顺序可能和你插入的顺序不一样:
>>> d={'a': 'ahh', 'b': 'baa', 'c': 'coconut'}
>>> d
{'a': 'ahh', 'c': 'coconut', 'b': 'baa'}
你可以用 sorted(list({'hello':'world', 'hi':'there'}))[1]
来获取字典键的排序列表中的第1个元素。在这个例子中,它会返回'hi'。不过,这种方式不是最直观或高效的……
如果你想要有序的结果,可以看看 OrderedDict。
或者你也可以直接把结果排序成一个列表:
>>> d={'a': 'ahh', 'b': 'baa', 'c': 'coconut'}
>>> l=[(k,v) for k, v in d.items()]
>>> l.sort()
>>> l[1]
('b', 'baa')
>>> l[1][0]
'b'
如果你想按值排序而不是按键,可以把 (k,v)
反转成 (v,k)
。
4
你可以使用 .keys()
这个方法:
for key in myDictionary.keys():
print(key)
你也可以使用 .items()
来同时遍历键和值:
for key, value in myDictionary.items():
print(key, value)
4
你可以用一个循环来遍历字典里的键:
>>> for key in yourdict:
>>> print(key)
hi
hello
如果你想把这些键变成用逗号分隔的字符串,可以用 ', '.join
。
>>> print(', '.join(yourdict))
hi, hello
顺便问一下,有没有办法直接用 myDictionary.key1 来获取值,比如返回 hi 呢?
不可以。字典里的键是没有特定顺序的。你在遍历它们时看到的顺序,可能和你插入它们时的顺序不一样。而且,当你添加或删除项目时,这个顺序理论上也可能会改变。
如果你需要一个有序的集合,可以考虑使用其他类型,比如 list
,或者 OrderedDict
。