我有一個串列和一本字典:
my_list = ['white', 'grey', 'black']
my_dict = {'name1': ['green', 'yellow', 'orange', 'black'],
'name2': ['red', 'yellow', 'orange', 'purple', 'white', 'black'],
'name3': ['blue', 'red', 'grey', 'orange', 'black']}
我想根據串列獲取過濾字典:
my_new_dict = {'name1': ['black'],
'name2': ['white', 'black'],
'name3': ['grey', 'black']}
我開始做的事情:
my_new_dict = {}
for k, v in my_dict.items():
for x in v:
temp_list = list()
if x in my_list:
temp_list.append(x)
my_new_dict[k] = temp_list
結果,我得到了一本只有 1 個元素“黑色”的字典:
print(my_new_dict)
{'name1': ['black'], 'name2': ['black'], 'name3': ['black']}
幫助解決這個問題。謝謝你。
uj5u.com熱心網友回復:
我會在這里使用字典理解。
>>> my_list = ["white", "grey", "black"]
>>>
>>> my_dict = {
... "name1": ["green", "yellow", "orange", "black"],
... "name2": ["red", "yellow", "orange", "purple", "white", "black"],
... "name3": ["blue", "red", "grey", "orange", "black"],
... }
>>>
>>> result = {
... name: [item for item in list_ if item in my_list] for name, list_ in my_dict.items()
... }
>>> print(result)
{'name1': ['black'], 'name2': ['white', 'black'], 'name3': ['grey', 'black']}
但是,如果您更喜歡使用當前的解決方案,則必須進行以下更改(此時您list會在每次迭代時重新初始化v)。
my_new_dict = {}
for k, v in my_dict.items():
temp_list = []
for x in v:
if x in my_list:
temp_list.append(x)
my_new_dict[k] = temp_list
print(my_new_dict)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/530221.html
標籤:Python列表字典
