比较列表值与字典python



我有一个列表和字典

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)}

您的病情不对。if i == k将列表元素与字典键进行比较,但您希望与值v进行比较。您不需要精确匹配,您正在寻找子字符串,因此您应该使用in而不是==。由于您似乎允许任何字符串成为另一个字符串的子字符串,请使用if v in i or i in v:

你在结果中赋值的值应该是列表元素,而不是字典值。

但是,如果没有找到匹配,您还需要使用值"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"

相关内容

  • 没有找到相关文章

最新更新