【问题标题】:Is it possible to refer to a value by index in a python dictionary? [duplicate]是否可以在 python 字典中按索引引用值? [复制]
【发布时间】:2020-11-19 06:43:13
【问题描述】:

我正在编写代码,并且我知道 python 字典中的一个键可以有多个值,但是我如何通过它的索引来引用所需的值呢?我想从dict的所有键中获取所有第一个值。我的字典:

ip = {'18992549780':[764890830,10000], '18992548863':[764890926,20000]}

但是我的解决方案抛出了一个错误:

print(ip.values().index[0])

AttributeError: 'dict_values' object has no attribute 'index'

【问题讨论】:

  • 你想得到764890830吗?
  • "I know that a key in a python dictionary can have multiple values" 不,它不能。它可能有一个列表作为值,并且该列表可能包含多个元素
  • @revliscano 是的。我想从dict的所有键中获取所有第一个值
  • @krubsburger 请将其添加到问题中
  • @DeepSpace 是的,我也是这个意思。我需要从此列表中获取所有第一个值

标签: python python-3.x


【解决方案1】:

“我知道python字典中的一个键可以有多个值”

不,它不能。它可能有一个列表作为值,并且该列表可能包含多个元素。

如果您想获取所有值中的所有第一个元素,您需要遍历这些值并获取正确的索引:

for values_list in ip.values():
    print(values_list[0])

如果你想将它们全部收集到一个列表中:

first_values = [values_list[0] for values_list in ip.values()]

注意:如果某些列表为空,则会引发 IndexError。 如果是这种情况,我需要使用try-except

除非您使用的是 Python 3.7 及更高版本,否则您不得依赖于构造列表中元素的顺序,因为字典在 3.7 之前是无序的。

【讨论】:

  • 谢谢这是我一直在寻找的
【解决方案2】:

要从该字典的所有键中获取所有第一个值,您应该使用以下内容:

result = [list_[0] for list_ in ip.values()]
print(result)

输出

[764890830, 764890926]

解释

我们只是使用列表推导来迭代 ip 字典的 values() 对象。然后,对于字典的每个键的每个值(在本例中:列表),我们将第一个元素 (list_[0]) 附加到我们的 result 列表中。

【讨论】:

  • 感谢您的回答和解释
猜你喜欢
  • 1970-01-01
  • 2013-02-13
  • 2017-10-29
  • 1970-01-01
  • 1970-01-01
  • 2013-07-21
  • 1970-01-01
  • 1970-01-01
  • 2018-08-12
相关资源
最近更新 更多