我有一个字典值和一个列表值列表。我需要将列表值与字典值进行比较,并获得具有键和值对的匹配数据。
我的字典:
res = {
'cXboTHyIeZaof6x7': ['#de6262', '#ffb88c'],
'19hyHnlzDMEDJ9N5': ['#ffcc66', '#FFFFFF'],
'TByXB1YzYSJW2kXO': ['#7A7FBC', '#807CC4'],
'utTtWdchE2T6vUF5': ['#A3DAC3', '#8BD0D4']
}
我的列表值列表:
diff_tolistoflist = [
['#de6262', '#ffb88c'],
['#A3DAC3', '#8BD0D4']
]
预期输出:
test = {
'cXboTHyIeZaof6x7': ['#de6262', '#ffb88c'],
'utTtWdchE2T6vUF5': ['#A3DAC3', '#8BD0D4']
}
我需要比较dict值和值列表,以获取具有键和值对的相似数据。
答案 0 :(得分:2)
您可以使用非常容易阅读的字典理解:
d = {k:v for k,v in res.items() if v in diff_tolistoflist}
print(d)
# {'cXboTHyIeZaof6x7': ['#de6262', '#ffb88c'], 'utTtWdchE2T6vUF5': ['#A3DAC3', '#8BD0D4']}
答案 1 :(得分:0)
您可以使用dict val_list检查列表项
test = {}
for key, val in res.items():
if val in diff_tolistoflist:
test[key] = val
结果
>>> test
>>> {'cXboTHyIeZaof6x7': ['#de6262', '#ffb88c'], 'utTtWdchE2T6vUF5': ['#A3DAC3', '#8BD0D4']}
答案 2 :(得分:0)
如果值唯一,我们可以反转字典:
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', '#ffb88c'], 'utTtWdchE2T6vUF5': ['#A3DAC3', '#8BD0D4']}
此解决方案区分大小写。这意味着f
和F
被认为是不同的。为了使其不区分大小写,您可以在反转字典时将字符串转换为小写字母,以后再使用diff_tolistoflist
进行相同操作(在声明字典或在循环中查找值时)。
答案 3 :(得分:0)
尝试一下,我有用户过滤功能。
x_test = [[age, sex, cp, trestbps]] # there could be multiple lists within the outer list if there were more than one samples