【发布时间】:2020-04-15 17:26:33
【问题描述】:
我有一本像这样的字典:
{'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。事实证明这是一个列表,如下面的 Daniel F 所说!
【问题讨论】:
-
你应该命名你的变量
-
在
for循环中?你能详细说明一下吗? -
我的意思是你最初的字典,但从上下文来看,我猜你叫它
groups -
也许你会感兴趣github.com/akesterson/dpath-python#filtering(但它是一个完整的库,只是为了那个小任务)。
-
type(groups.values())与您的值的实际类型无关,因此您的更新是无稽之谈。尝试 `[type(v) for v in groups.values()]
标签: python python-3.x dictionary for-loop if-statement