搜索列表中的值是否在字典中,该字典的格式为键字符串,值列表(字符串)

胡安·德拉克鲁兹
my_dict = {                              # This dictionary is generated thru
'a' : [ 'value1', 'value4', 'value5' ],  # the info given by the user
'b' : [ 'value2', 'value6', 'value7'],
'c' : [ 'value3', 'value8', 'value9']
}

list = [ 'value1', 'value2' ] # List is generated using list comprehension

我需要生成一个将输出如下内容的列表:

output_list = ['a', 'b']

我需要检查“列表”上的值是否与字典内列表上的值匹配。这有可能吗?

我尝试使用此方法,但只得到一个空列表:

[key for key, value in my_dict.items() if value in list]
阿南德·库玛(Anand S Kumar)

您还需要遍历list(并且您不应该将其list用作变量名,它会掩盖内置list函数)。范例-

[key for item in lst for key,value in my_dict.items() if item in value]

演示-

>>> my_dict = {                              # This dictionary is generated thru
... 'a' : [ 'value1', 'value4', 'value5' ],  # the info given by the user
... 'b' : [ 'value2', 'value6', 'value7'],
... 'c' : [ 'value3', 'value8', 'value9']
... }
>>>
>>> lst = [ 'value1', 'value2' ]
>>> [key for item in lst for key,value in my_dict.items() if item in value]
['a', 'b']

如果使用set而不是list将值存储在字典中,则可以获得更好的性能(因为在集合内部进行搜索是O(1)运算,而在列表内部进行搜索是O(n))。范例-

my_dict = {key:set(value) for key,value in my_dict.items()}
[key for item in lst for key,value in my_dict.items() if item in value]

演示-

>>> my_dict = {key:set(value) for key,value in my_dict.items()}
>>> pprint(my_dict)
{'a': {'value4', 'value5', 'value1'},
 'b': {'value6', 'value7', 'value2'},
 'c': {'value3', 'value9', 'value8'}}
>>> lst = [ 'value1', 'value2' ]
>>> [key for item in lst for key,value in my_dict.items() if item in value]
['a', 'b']

如果您要检查列表中的任何值是否与字典中列表中的任何值匹配,则可以使用set.intersection并检查结果是否为空。范例-

[key for key, value in my_dict.items() if set(value).intersection(lst)]

由于字典没有任何特定顺序,因此该结果将不会排序。

演示-

>>> my_dict = {
... 'a' : [ 'value1', 'value4', 'value5' ],
... 'b' : [ 'value2', 'value6', 'value7'],
... 'c' : [ 'value3', 'value8', 'value9']
... }
>>> lst = [ 'value1', 'value2' ]
>>> [key for key, value in my_dict.items() if set(value).intersection(lst)]
['b', 'a']

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从列表中删除空字符串,该列表是字典列表中特定键的值?

从字典列表中创建具有特定值的列表(键为字符串,值是整数列表)

如何从 python 字典列表值中删除字符串 ''?

在字典列表中的列表中搜索字符串

加速将字典键和值与python列表中的字符串进行比较

如何拆分字典列表中的字典字符串值以添加新的字典项?

从列表中的子字符串返回与包含子字符串的字典的匹配值

从字典列表中删除键为空字符串的字典

列出datetype的键,该键在字典python列表中具有字符串date

Python-当值是列表时检查字符串是否在字典值中

字典列表中的熊猫字符串搜索

字符串中具有不同键的字典列表

从字典列表中创建键字符串

比以字符串为键和列表作为值的字典更好的数据类型

Python 在字典中搜索字符串值,如果找到则返回键和值

包含基于字典值的字符串字典的列表索引

如果字典在列表中,如何将字典的值从字符串更改为 int

以字符串为键,泛型为值的字典

使用字典方法搜索包含在字符串格式中的值 - Python

将列表转换为以字符串为键并以浮点数为值列表的字典

Python - 匹配字符串中的字典值并按字符串顺序打印键

在列表和字典的字典中查找字符串

在显示过程中,自动包装字典中列表中的字符串值

用 Python 中字典中的值替换嵌套列表中的字符串

CSV到字典,将标题作为键,其余行作为Python中的字符串(值)列表

使用正则表达式或不使用字典的值列表中的键替换字符串

无法将json文件字典中的重复字符串解析为键/值对

如何将字典中的字符串值转换为python中的列表?

如何在列表中搜索字符串并输出包含该字符串的所有值?