【发布时间】:2013-08-08 07:22:19
【问题描述】:
我需要编写一个函数来完成以下工作
在字典中找到一个字符串作为值并返回它的键 (如果在主字典中找到第一个键,如果在子字典中找到第二个键)。
源代码
这是我尝试实现的功能,但它工作不正确,因为我找不到如何将列表转换为字典的任何答案,因为在这种情况下会发生以下错误
对于 v, k in l: ValueError: 需要超过 1 个值才能解压
def GetKeyFromDictByValue(self, dictionary, value_to_find):
""""""
key_list = [k for (k, v) in dictionary.items() if v == value_to_find]
if key_list.__len__() is not 0:
return key_list[0]
else:
l = [s for s in dictionary.values() if ":" in str(s)]
d = defaultdict(list)
for v, k in l:
d[k].append(v)
print d
dict = {'a': {'a1': 'a2'}, "aa": "aa1", 'aaa': {'aaa1': 'aaa2'}}
print GetKeyFromDictByValue(dict, "a2")
我必须在 Python 2.5 上执行此操作
【问题讨论】:
-
使用
len(key_list),不key_list.__len__()。非零值是布尔真值:if len(key_list):就足够了。 -
你不应该将你的变量命名为
dict;这掩盖了内置类型,实际上阻止您在此处的值上使用isinstance(),因为您现在无法测试该类型。
标签: python list dictionary python-2.5