【发布时间】:2020-08-18 15:32:01
【问题描述】:
我想知道以下字典的哪个键属于特定的子键:
dic = {'key1':{'subkey1':'entry1', 'name':'entry2'},
'key2':{'subkey3':'entry3', 'name':'entry4'},
'key3':{'subkey5':'entry5', 'name':'entry6'}}
例如:哪个键属于entry4?
for i in dic.keys():
if dic[i]['name'] == 'entry4':
print(i)
break
答案是:key2
有没有更简单/更好的方法来做到这一点?
【问题讨论】:
-
[k for k, v in dic.items() if 'entry4' in v.values()]?基本相同的逻辑,但更紧凑。 -
如果您经常通过
name查找,您可能希望反转您的字典以由name键入以进行 O(1) 查找。 -
next(i for i in dic if dic[i]['name'] == 'entry4') -
@superbrain
dic[i].get('name')会更健壮。如果没有匹配,也许可以使用next的默认参数。 -
@masterofpuppets 您能否确认您只想使用“名称”键搜索值?在这种情况下,其中一些答案是错误的!
标签: python dictionary nested