从列表中访问字典

Ram*_*tha 0 python

我有一些字典如下

d1={}  
d2={}  
d3={}  
Run Code Online (Sandbox Code Playgroud)

字典键的值包含列表
和列表,

l1=[d1,d2,d3]
Run Code Online (Sandbox Code Playgroud)

list包含所有可用字典的名称.我想遍历列表中包含所有字典名称的所有字典.

如何通过列表访问所有这些词典?

Hen*_*nyH 5

>>> l1 = [d1,d2,d3]
>>> for d in l1:
        for k,v in d.items():
              print(k,v)
Run Code Online (Sandbox Code Playgroud)

一个更好的例子

d1 = {"a":"A"}
d2 = {"b":"B"}
d3 = {"c":"C"}
l1 = [d1,d2,d3]
for d in l1:
    for k,v in d.items():
        print("Key = {0}, Value={1}".format(k,v))
Run Code Online (Sandbox Code Playgroud)

产生

>>> 
Key = a, Value=A
Key = b, Value=B
Key = c, Value=C
Run Code Online (Sandbox Code Playgroud)

如果它们只包含字典的名称,即"d1"你可以做这样的事情(产生与上面相同的结果):

d1 = {"a":"A"}
d2 = {"b":"B"}
d3 = {"c":"C"}
l1 = ['d1','d2','d3']
for dname in l1:
    for k,v in globals()[dname].items():
        print("Key = {0}, Value={1}".format(k,v))
Run Code Online (Sandbox Code Playgroud)

虽然我不推荐这样的方法.(注意:如果字典在本地范围内,你也可以使用locals())

如果你有一个字典,其中有一个与键相关的列表,你可以像这样查看列表:

d1 = {"a":[1,2,3]}
d2 = {"b":[4,5,6]}
l1=["d1","d2"]

for d in l1:
    for k,v in globals()[d].items(): #or simply d.items() if the values in l1 are references to the dictionaries
        print("Dictionray {0}, under key {1} contains:".format(d,k))
        for e in v:
            print("\t{0}".format(e))
Run Code Online (Sandbox Code Playgroud)

生产

Dictionray d1, under key a contains:
    1
    2
    3
Dictionray d2, under key b contains:
    4
    5
    6
Run Code Online (Sandbox Code Playgroud)