[英]Compare dictionary list values to the list of list values using python
我有一個字典值和列表值列表。 我需要將列表值與字典值進行比較,並使用鍵值對獲取匹配的數據。
我的字典:
res = {
'cXboTHyIeZaof6x7': ['#de6262', '#ffb88c'],
'19hyHnlzDMEDJ9N5': ['#ffcc66', '#FFFFFF'],
'TByXB1YzYSJW2kXO': ['#7A7FBC', '#807CC4'],
'utTtWdchE2T6vUF5': ['#A3DAC3', '#8BD0D4']
}
我的列表值列表:
diff_tolistoflist = [
['#de6262', '#ffb88c'],
['#A3DAC3', '#8BD0D4']
]
預期 output:
test = {
'cXboTHyIeZaof6x7': ['#de6262', '#ffb88c'],
'utTtWdchE2T6vUF5': ['#A3DAC3', '#8BD0D4']
}
我需要比較 dict 值和值列表以獲取具有鍵值對的相似數據。
您可以使用非常容易閱讀的字典理解:
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', '#ffb88c'], 'utTtWdchE2T6vUF5': ['#A3DAC3', '#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', '#ffb88c'], 'utTtWdchE2T6vUF5': ['#A3DAC3', '#8BD0D4']}
此解決方案區分大小寫。 這意味着, f
和F
被認為是不同的。 為了使其不區分大小寫,您可以在反轉字典時將字符串轉換為小寫,然后對diff_tolistoflist
執行相同操作(在聲明它或在循環中查找值時)。
試試這個,我有用戶過濾器 function。
print dict(filter(lambda x:x[1] in diff_tolistoflist,res.items()))
Result:{'cXboTHyIeZaof6x7': ['#de6262', '#ffb88c'], 'utTtWdchE2T6vUF5': ['#A3DAC3', '#8BD0D4']}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.