从字典中选择一个键 Python

1 投票
5 回答
17730 浏览
提问于 2025-04-17 04:34

如何在循环中遍历一个字典并从中选择键呢?

比如说,我有一个这样的字典:{'hello':'world', 'hi':'there'}。有没有办法用for循环遍历这个字典,然后打印出hellohi呢?

另外,有没有办法通过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

撰写回答