你如何在字典里找到第一把钥匙?

2024-03-28 21:08:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图让我的程序从字典中打印"banana"。最简单的方法是什么?

请注意,我并不是试图让我的程序打印出与"banana"相关的值,而是用一个for循环打印出"banana",所以当我运行它时,每个键也会被打印出来。

这是我的字典:

prices = {
    "banana" : 4,
    "apple" : 2,
    "orange" : 1.5,
    "pear" : 3
}

Tags: 方法程序applefor字典bananapricespear
3条回答

字典没有编入索引,但在某种程度上是有序的。下面将为您提供第一个现有密钥:

list(my_dict.keys())[0]

更新:从Python 3.7开始,插入顺序保持不变,因此这里不需要OrderedDict。您可以使用下面的方法处理一个普通的dict

Changed in version 3.7: Dictionary order is guaranteed to be insertion order. This behavior was an implementation detail of CPython from 3.6.

source


Python3.6及更早版本*

如果你说的是一个正则的dict,那么“第一个键”并不意味着什么。这些钥匙没有以任何你可以依赖的方式订购。如果你在你的dict上迭代,你很可能不会第一眼看到"banana"

如果您需要保持事物的有序,那么您必须使用OrderedDict,而不仅仅是一个普通的字典。

import collections
prices  = collections.OrderedDict([
        ("banana", 4),
        ("apple", 2),
        ("orange", 1.5),
        ("pear", 3),
])

如果您想按顺序查看所有键,可以通过迭代查看

for k in prices:
    print(k)

你也可以把所有的钥匙都列在一个单子里然后用它

ks = list(prices)
print(ks[0]) # will print "banana"

在不创建列表的情况下获取第一个元素的更快方法是在迭代器上调用next。但是,当试图获取nth元素时,这并不能很好地概括

>>> next(iter(prices))
'banana'

*CPython在3.6中保证了作为实现细节的插入顺序。

如果只需要字典的一个键,这可能是最短的Python2和3有效代码:

my_dict = {'foo': 'bar'}
next(iter(my_dict)) # outputs 'foo'

相关问题 更多 >