python - 如何从多值字典中的任何指定值中获取键

标签 python dictionary indexing

我不确定字典是否可行,但我制作了一本包含 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/

相关文章:

Excel - 从一列水平返回一行中的多个匹配值

algorithm - 跟踪/计算词频

python - 为什么在 kivy 样式文件中使用尖括号时不断收到 "invalid syntax"错误?

python - 使用 Emacs 进行 Django 调试

javascript - 如何有效地检查 Javascript "dictionary"对象中是否存在键值对

generics - FreePascal是否有Dictionary对象?

swift - 保存核心数据属性时将索引从0移动到1

python - 我可以在同一台 Windows 计算机上安装 Python 3.x 和 2.x 吗?

Python PyInstaller 4.0 打包 TensorFlow 2.0 项目无法正常工作 ImportError : cannot import name 'pywrap_tensorflow'

python - 将有序字典的可迭代转换为 pandas 数据帧