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”}
我期待这样的事情。。。即使稍微匹配,我们也应该返回,这是我在编辑后返回的。它起作用了。非常感谢。