使用python将字典列表值与列表值列表进行比较

我有一个字典值和一个列表值列表。我需要将列表值与字典值进行比较,并获得具有键和值对的匹配数据。

我的字典:

res = {
    'cXboTHyIeZaof6x7': ['#de6262','#ffb88c'],'19hyHnlzDMEDJ9N5': ['#ffcc66','#FFFFFF'],'TByXB1YzYSJW2kXO': ['#7A7FBC','#807CC4'],'utTtWdchE2T6vUF5': ['#A3DAC3','#8BD0D4']
}

我的列表值列表:

diff_tolistoflist = [
    ['#de6262',['#A3DAC3','#8BD0D4']
]

预期输出:

test = {
    'cXboTHyIeZaof6x7': ['#de6262','#8BD0D4']
}

我需要比较dict值和值列表,以获取具有键和值对的相似数据。

fql920011429 回答:使用python将字典列表值与列表值列表进行比较

您可以使用非常容易阅读的字典理解:

d = {k:v for k,v in res.items() if v in diff_tolistoflist}
print(d)  
# {'cXboTHyIeZaof6x7': ['#de6262','#ffb88c'],'utTtWdchE2T6vUF5': ['#A3DAC3','#8BD0D4']}
,

您可以使用dict val_list检查列表项

test = {}
for key,val in res.items():
    if val in diff_tolistoflist:
        test[key] = val

结果

>>> test
>>> {'cXboTHyIeZaof6x7': ['#de6262','#8BD0D4']}
,

如果值唯一,我们可以反转字典:

reversed_dict = {tuple(res[key]): key for key in res}

字典中的键必须是可变的,因此我们必须将其转换为元组。

然后我们可以对值进行简单的查找:

final_result = {}
for v in diff_tolistoflist:
    k = reversed_dict.get(tuple(v))
    if k:
        final_result[k] = v

我使用了dict.get,以便在出现问题时不会引发异常。

>>> final_result
{'cXboTHyIeZaof6x7': ['#de6262','#8BD0D4']}

此解决方案区分大小写。这意味着fF被认为是不同的。为了使其不区分大小写,您可以在反转字典时将字符串转换为小写字母,以后再使用diff_tolistoflist进行相同操作(在声明字典或在循环中查找值时)。

,

尝试一下,我有用户过滤功能。

x_test = [[age,sex,cp,trestbps]] # there could be multiple lists within the outer list if there were more than one samples
本文链接:https://www.f2er.com/3167496.html

大家都在问