Python 将列表值与词汇表进行比较
我有一张单子和一本字典Python 将列表值与词汇表进行比较,python,python-3.x,list,dictionary,Python,Python 3.x,List,Dictionary,我有一张单子和一本字典 lis = ["abc","bcd fg","cda"] dic = {1:"dcbagh",2:"cd abc", 3:"fg"} 我想将列表值与字典值进行比较,然后返回一个新字典,如下所示 res_dic = {1:"none" ,2:"abc" , 3:"bcd fg"}
lis = ["abc","bcd fg","cda"]
dic = {1:"dcbagh",2:"cd abc", 3:"fg"}
我想将列表值与字典值进行比较,然后返回一个新字典,如下所示
res_dic = {1:"none" ,2:"abc" , 3:"bcd fg"}
我们需要返回一个对应的字符串,即使稍微匹配。我试过以下方法。但一切都没有结果
n = {}
for k,v in dic.items():
for i in lis:
if i==k:
n[k] = v
这是另一种方法
n = {k: d[k] for k in d.keys() & set(lis)}
你的情况不对
如果i==k
将列表元素与字典键进行比较,但您希望与值进行比较,即v
。您不需要精确匹配,您正在寻找子字符串,因此您应该在中使用,而不是=
。因为您似乎允许其中一个字符串作为另一个字符串的子字符串,所以如果i中的v或v中的i:
在结果中指定的值应该是列表元素,而不是字典值
但是如果没有找到匹配项,您还希望使用值“none”
。因此,当找到匹配项时,需要中断循环,如果循环完成而未中断,则使用else:
指定一个值
n = {}
for k,v in dic.items():
for i in lis:
if v in i or i in v:
n[k] = i
break
else:
n[k] = "none"
不要使用
dict
作为变量名,您正在覆盖内置函数。我已经删除了,但它仍然不起作用。如果I:中有v,则条件应该是,这只是一个一般性的注释,与问题无关。我得到了空值这是结果{1:'none',2:'none',3:'bcd fg'}
当op期待这个{1:“无”,2:“abc”,3:“bcd fg”}
我知道,我只是问了他这件事。{1:“无”,2:“abc”,3:“bcd fg”}
我期待这样的事情。。。即使稍微匹配,我们也应该返回,这是我在编辑后返回的。它起作用了。非常感谢。