我如何访问本身是另一个字典值的列表中键的所有值?

How do i access all values of keys inside a list which itself is a value of another dictionary?

dict = {key1:"value", key2:[{id:"value21", name:"value31" }, {id:"value22",name:"value32"},{id: "899",name:"values"}], key3:"value3"}

我需要提取名称的所有值

首先需要正确格式化问题,因为键是字符串。


# make sure keys are strings
key1 = 'a'
key2 = 'b'
key3 = 'c'
name = 'name'

# make a valid dictionary

d = {key1:"value", 
    key2:[{'id':"value21", name:"value31" }, {'id':"value22",name:"value32"},{'id': "899",name:"values"}],
     key3:"value3"}

# this is a list
result = d[key2]

# inspect list
for i in result:
    if name in i.keys():
        print (i[name])

returns这个:

value31
value32
values

你可以试试:

dict = {"key1":"value", "key2":[{"id":"value21", "name":"value31" }, {"id":"value22","name":"value32"},{"id": "899","name":"values"}], "key3":"value3"}

for data in dict["key2"]:
    if "name" in data:
        print(data["name"])

输出

value31
value32
values
  1. dictid 是保留的,所以我将它们更改为 dct'id':
dct = {'key1':"value",'key2':[{'id':"value21", 'name':"value31" },{'id':"value22",'name':"value32"},{'id': "899",'name':"values"}],'key3':"value3"}

我还将键更改为字符串,否则 python 需要一个变量名,我认为您想迭代字典 w/o 提前知道键。

  1. 迭代字典值并从列表中的嵌套字典中提取名称:
all_names = []

for value in dct.values():
    if isinstance(value, list):
        for sub_dct in value:
            try:
                all_names.append(sub_dct['name'])
            except KeyError:
                pass

print(all_names)

如果字典是给定的格式, 可以使用下面的代码

dictor = {'key1':"value", 'key2':[{'id':"value21", 'name':"value31" }, {'id':"value22",'name':"value32"},{'id': "899",'name':"values"}], 'key3':"value3"}

获取名字的逻辑是:

def GetValues(dictionary):
    name_data = []
    for i in dictor.keys():
        if type(dictor[i]) is list:
            for i in dictor[i]:
                name_data.append(i['name'])
    return name_data

print(GetValues(dictor))

将得到输出为

['value31', 'value32', 'values']