我有一本这样的字典:
{'7D': {'category': 'C', 'directory': 'C', 'name': 'Co'},
'37': {'category': 'C', 'directory': 'C', 'name': 'FI'},
'AA': {'category': 'F', 'directory': 'F', 'name': 'Le'},
'80': {'category': 'Cl', 'directory': 'F', 'name': 'AV'},
'F7': {'category': 'Cl', 'directory': 'F', 'name': 'AG'}}
如果lookup_value = 'Co'
,我想得到7D
。我试过这两种方法:
lookup_value = 'Co'
for name, val in groups.items():
if val == lookup_value:
print(name)
还有这个:
print(list(groups.keys().[list(groups.values()).index(lookup_value)])
第二个返回:
ValueError: 'Co' is not in list
编辑:
很抱歉弄得一团糟,我想最初的字典没有嵌套字典。事实证明,这是一个列表,可以从下面观察到:
bbb = groups.values()
type(bbb)
返回dict_values
。这原来是一个列表,根据丹尼尔F下面!你知道吗
一般来说,字典用于单向查找。如果您发现自己经常进行反向查找,那么创建和维护反向字典可能是值得的:
现在只需访问
如果您真的只需要一次查找而不创建反向dict,请将
next
与生成器一起使用:我想解释为什么您的第一种方法不能按预期工作,并提供最小的更改修复。 您的
groups
是dict,键是str
,值是dict
,因此在for循环中:val
是dict
例如:{'category': 'C', 'directory': 'C', 'name': 'Co'}
询问python关于str
和dict
之间的相等(==
)会导致回答:否。正确的问题是:'Co'
在dict
的值内吗?更改后,您的代码将正常工作:输出:
相关问题 更多 >
编程相关推荐