如何在python中使用嵌套字典选择特定的键?



我是使用python字典的新手,一直被如何在嵌套字典中迭代和引用特定键所困扰。例如,在下面的代码中,我希望只列出字典中每个宠物的宠物名。现在,我已经列出了每个宠物的所有钥匙。

petDict = {
'pet1' : {
'type' : 'dog',
'name' : 'scooby',
'age' : '4'
},
'pet2' : {
'type' : 'cat',
'name' : 'milo',
'age' : '1'
},
'pet3' : {
'type' : 'fish',
'name' : 'danny',
'age' : '2'
}
}
print('Here are my pets:')
for petNum, petInfo in petDict.items():
for key in petInfo:
print(key + ': ', petInfo[key])

当前输出:

type:  dog
name:  scooby
age:  4
type:  cat
name:  milo
age:  1
type:  fish
name:  danny
age:  2

所需输出:

name: scooby
name: milo
name: danny

1条线解决方案:

petDict = {
'pet1': {
'type': 'dog',
'name': 'scooby',
'age': '4'
},
'pet2': {
'type': 'cat',
'name': 'milo',
'age': '1'
},
'pet3': {
'type': 'fish',
'name': 'danny',
'age': '2'
} }
petNames = [petDict[spe]['name'] for spe in petDict]
print(petNames)
petDict = {
'pet1': {
'type': 'dog',
'name': 'scooby',
'age': '4'
},
'pet2': {
'type': 'cat',
'name': 'milo',
'age': '1'
},
'pet3': {
'type': 'fish',
'name': 'danny',
'age': '2'
}
}
print('Here are my pets:')
for petNum, petInfo in petDict.items():
print('name: ', petInfo["name"])

输出:

Here are my pets:
name:  scooby
name:  milo
name:  danny

您可以简单地使用if条件来检查键是否为name,如下所示。

petDict = {'pet1': {
'type': 'dog',
'name': 'scooby',
'age': '4'
},
'pet2': {
'type': 'cat',
'name': 'milo',
'age': '1'
},
'pet3': {
'type': 'fish',
'name': 'danny',
'age': '2'
}
}
print('Here are my pets:')
for petNum, petInfo in petDict.items():
for key in petInfo:
if key == 'name':
print(key + ': ', petInfo[key])

通过这种方式,如果您还想获得其他键,您可以根据所需的键添加附加条件。

最新更新