通过索引在Python中访问字典值

55 投票
4 回答
222531 浏览
提问于 2025-04-17 17:19

我想从一个Python字典中通过键的索引来获取值。有没有什么方法可以像这样获取呢?

dic = {}
value_at_index = dic.ElementAt(index)

这里的 index 是一个整数。

4 个回答

9

如果你只是想从可用的键范围中随机获取一个值,可以使用 random.choice 来选择字典中的值(如果你用的是Python 3,记得先把字典的值转换成列表)。

>>> from random import choice
>>> d = {1: 'a', 2: 'b', 3: 'c'}
>>>> choice(list(d.values()))
17

让我们来看一个字典的例子:

numbers = {'first':0, 'second':1, 'third':3}

当我执行了

numbers.values()[index]

我遇到了一个错误:'dict_values'对象不支持索引

当我执行了

numbers.itervalues()

来遍历并提取值时,也出现了错误:'dict'对象没有'iteritems'这个属性

因此,我想出了一个新的方法,通过将字典转换为元组来按索引访问字典中的元素。

tuple(numbers.items())[key_index][value_index]

例如:

tuple(numbers.items())[0][0] gives 'first'

如果你想编辑值或对值进行排序,元组对象不允许修改其中的项。在这种情况下,你可以使用

list(list(numbers.items())[index])
70

在Python 3.7之前,字典是没有顺序的,所以你问的这个问题其实是没有意义的。

如果你真的非常清楚自己在做什么,可以使用

value_at_index = list(dic.values())[index]

请记住,在Python 3.7之前,添加或删除一个元素可能会改变其他所有元素的顺序。

撰写回答