我不确定字典是否可行,但我制作了一本包含 1-7 项列表的字典。我想访问给定列表中任何项目的 key 。这可能吗?我找到了一种方法来访问给定一个值( Get key by value in dictionary )的键,但如果有多个值怎么办?我的最终目标是重复一个字符串(字符串 A),给定一个单独的字符串(字符串 B),该字符串分类在字符串 A 下。例如,“类别 A”包含 aa、bb、cc,“类别 B”包含 a、b , C。 [aa, a, bb, aa, c, b, aa] 列表等于:[A, B, A, A, B, B, A]。到目前为止,这是我的尝试,但它不起作用。
dict = {'A':['aa', 'bb', 'cc'],'B':['a','b','c'] }
nwlst = []
lst = [aa, a, bb, aa, c, b, aa]
for i in lst:
if i in dict.values():
nwlst.append([list(dict.keys())[list(dict.values()).index([str(i)])]])
也许使用 grep 之类的东西也可以工作,但我不知道如何实现这个概念。
最佳答案
我猜你需要一些与 the accepted answer 非常相似的东西在您链接的问题中,但您不会测试是否相等,而是会测试是否包含在列表中。另外,您忘记对 lst
中的项目使用引号。
dict = {'A':['aa', 'bb', 'cc'],'B':['a','b','c'] }
newlst = []
lst = ['aa', 'a', 'bb', 'aa', 'c', 'b', 'aa']
for search_v in lst:
for k, v in dict.items():
if search_v in v:
newlst.append(k)
还有其他选项,与链接问题中的其他答案相关。
例如,您可以反转字典,如this answer 。 您甚至可以用一个衬垫(未测试)来做到这一点
dict = {'A':['aa', 'bb', 'cc'],'B':['a','b','c'] }
new_dict = {iv: k for k, v in dict.items() for iv in v}
然后
newlst = []
lst = ['aa', 'a', 'bb', 'aa', 'c', 'b', 'aa']
for search_k in lst:
newlst.append(new_dict[search_k])
也有一个衬垫用于此。
PS:在 Google 中搜索python反向字典会给你很多选择。特别参见this .
关于python - 如何从多值字典中的任何指定值中获取键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45157474/