首页 > 解决方案 > 删除字典中的重复值

问题描述

我想在提取所需数据“rate”和“genre”后删除字典中的重复值

a=[{'movie': 'abc', 'rate': '9', 'origin': 'AU', 'genre': 'horror'},
   {'movie': 'xyz', 'rate': '7', 'origin': 'NY', 'genre': 'romance'},
   {'movie': 'jkl', 'rate': '9', 'origin': 'HK', 'genre': 'horror'},
   {'movie': 'qwe', 'rate': '6', 'origin': 'HK', 'genre': 'comedy'},
   {'movie': 'vbn', 'rate': '9', 'origin': 'BKK', 'genre': 'romance'}]

needed_data=[]
for test in a:
    x={}
    word=['rate','genre']
    for key,value in test.items():
        for words in word:
            if key == words:
                x[key] = value

    needed_data.append(x)

results = {}
filters=[]
for yy in needed_data:
    for key,value in yy.items():
        if value not in results.values():
            results[key] = value
    filters.append(results)
print(filters)

上面代码的输出是

[{'rate': '9', 'genre': 'romance'}, 
{'rate': '9', 'genre': 'romance'}, 
{'rate': '9', 'genre': 'romance'}, 
{'rate': '9', 'genre': 'romance'}, 
{'rate': '9', 'genre': 'romance'}]

我想要的输出是

[{'rate': '9', 'genre': 'horror'}, 
{'rate': '7', 'genre': 'romance'},  
{'rate': '6', 'genre': 'comedy'}, 
{'rate': '9', 'genre': 'romance'}]

标签: pythondictionary

解决方案


我建议使用 pandas 进行数据处理

import pandas as pd
df = pd.DataFrame(a)
df_dd= df[["genre", "rate"]].drop_duplicates()
new_a = df_dd.to_dict(orient="records")
print(new_a)

输出

[{'genre': 'horror', 'rate': '9.'}, 
 {'genre': 'romance', 'rate': '7'}, 
 {'genre': 'horror', 'rate': '9'}, 
 {'genre': 'comedy', 'rate': '6'}, 
 {'genre': 'romance', 'rate': '9'}]

推荐阅读