在python中,如何使用列表索引号访问字典值?

在python中,如何使用列表索引号访问字典值?,python,list,dictionary,for-loop,Python,List,Dictionary,For Loop,嘿,伙计们,这是我的问题 假设我有两个字典,一个包含这两个字典的列表: a={1:"hello",2:"goodbye"} b={1:"Hi",2:"Farewell"} list1=[a,b] 现在,如果我像这样迭代整个列表,一切正常: for e in list1: print(e[1]) 但是,每当我尝试使用列表索引号迭代列表时,python都会抛出一条错误消息(“TypeError:'int'对象没有属性'getitem”) 有人能解释一下我如何使用列表索引号访问列表中某个项

嘿,伙计们,这是我的问题

假设我有两个字典,一个包含这两个字典的列表:

a={1:"hello",2:"goodbye"}
b={1:"Hi",2:"Farewell"}
list1=[a,b]
现在,如果我像这样迭代整个列表,一切正常:

for e in list1:
    print(e[1])
但是,每当我尝试使用列表索引号迭代列表时,python都会抛出一条错误消息(“TypeError:'int'对象没有属性'getitem”)

有人能解释一下我如何使用列表索引号访问列表中某个项目的字典值吗


提前感谢您的帮助

字典条目不是按给定顺序存储的,因此输出将不是您所期望的。但是,您可以执行
下一步(e.values())
列表1[0]
是一个
命令。正在为…使用
。。。在…
中,在一个
dict
上迭代键,您的键是int

尝试:

您可以尝试:

a = {1: "hello", 2: "goodbye"}
b = {1: "Hi", 2: "Farewell"}
list1 = [a, b]

for index, dict_data in enumerate(list1):
    print(index)
    print(dict_data)

问题在于
list1[0]
是一个字典,当使用for循环中的方法时,它会迭代该字典的键

因此,在您的情况下,对于第一次迭代,
e
变量的类型为
int
,值为1,在第二次迭代中,它的值为
2

因此,如果您想迭代字典中的键和值,应该使用

for key, val in list1[0].items():
    print('key: {}, value {}'.format(key, val))
只要做:

清单1[0]中的e的

打印(e)

您可以使用.get方法,如下所示:

for d in list1:
    for i in d:
        print(d.get(i))

也许这可以帮助你

从Python 3.7开始,它们一定会井然有序哦,我不知道!顺序是什么?它们插入的顺序你想问:为什么在a:print(e[1])
中e的
不起作用,因为有一本字典
a
。答案是,当你像那样重复一个
a
指令时,你的
e
s就是关键。在第一次迭代中-
e
是1,第二次,
e
是2。现在,如何查询整数上的
e[1]
?你不能。您需要向自己澄清的是:如何在dict中作为键值对进行迭代。这样您就可以很容易地解决问题。一个好的做法是:在执行列表1[0]中e的
部分后,您手中就有一个
e
。始终在循环的第一行打印该对象。这样,在尝试像
e[1]
那样为其下标之前,您可以看到您正在使用的是什么。但这种方式将以数组形式打印所有字典
for key, val in list1[0].items():
    print('key: {}, value {}'.format(key, val))
for d in list1:
    for i in d:
        print(d.get(i))