我有一本以下形式的字典
{'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/