python - 使用列表理解根据值从字典中获取键会返回空列表

标签 python

我有一本以下形式的字典

{'D': ['A', 'B'], 'C': ['a'], 'B': ['b'], 'A': ['a'], 'S': ['C', 'D']}

我可能有两个列表作为输入,即 ['A', 'C']['B']。我想获取这些列表元素的所有组合,这里 ['A' , 'B'], ['C', 'B'] 并查看它们是否在我的原始字典中并且如果是,则返回找到 key 的位置。

为此,我创建了以下两个函数

def func1(r1, r2):
    return [[func2([outer, inner]) for inner in r2] for outer in r1]


def func2(r):
    return [key for key, val in my_dictionary.items() if r in val]

所以我可以将它们称为 func1(list1, list2) 并且我希望在这里得到 D 因为它包含列表 ['A' , 'B'],但我返回的是空列表。

我在上面的函数中搞砸了什么?

最佳答案

你的问题是语句... if r in val。它可能应该是 ... if r == val。在您的情况下,值 val 将类似于 ['A', 'B'],有时也会是 r

in 检查 val 的元素是否为 r,这显然永远不会为真。 == 比较两个列表中的所有元素,这正是您想要的。

关于python - 使用列表理解根据值从字典中获取键会返回空列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44096600/

相关文章:

python - 如何代入 Python 中的正则表达式组

python - 使用嵌套循环创建数据框

python - 导入错误 : Could not import settings

python - pyplot散点图标记大小

python - 具有条件返回值的自定义损失

python - 在 TensorflowJS 中构建神经网络

python - 有没有更好的方法在Python中读取多个txt文件?

python - 获取 openerp 中事件过滤器下上下文中的所有 ID

python - 用下划线替换空格,但不是全部

python - 在 Python 中从包含特殊字符的 CSV 单元格中提取字符串