[英]How to filter dictionary using value of another dictionary in python?
Case 1: I wanna filter Dict1 using the value of Dict2, Ex : filter value >1 using value of dict2案例 1:我想使用 Dict2 的值过滤 Dict1,例如:使用 dict2 的值过滤值 >1
Dict1={'saya': 0.1823215567939546,
'menolak': 0.6931471805599453,
'omnibus': -0.15415067982725836,
'law': -0.15415067982725836,
'dan': 1.0986122886681098,
'tetap': 1.0986122886681098,
'di': 1.0986122886681098,
'sekolah': 1.0986122886681098,
'diperintahkan': 1.0986122886681098,
'untuk': 1.0986122886681098,
'tidak': 1.0986122886681098,
'layak': 1.0986122886681098,
'meningkatkan': 1.0986122886681098,
'kesejahteraan': 1.0986122886681098,
'setuju': 0.6931471805599453,
'diterapkan': 0.6931471805599453}
Dict2={'saya': 1,
'menolak': 2,
'omnibus': 3,
'law': 1,
'dan': 0.5,
'tetap': 0.5,
'di': 1,
'sekolah': 2,
'diperintahkan': 3,
'untuk': 4,
'tidak': 5,
'layak': 1.0986122886681098,
'meningkatkan': 6,
'kesejahteraan': 5,
'setuju': 8,
'diterapkan': 2}
The result that i hope:我希望的结果:
Result={
'menolak': 0.6931471805599453,
'omnibus': -0.15415067982725836,
'sekolah': 1.0986122886681098,
'diperintahkan': 1.0986122886681098,
'untuk': 1.0986122886681098,
'tidak': 1.0986122886681098,
'meningkatkan': 1.0986122886681098,
'kesejahteraan': 1.0986122886681098,
'setuju': 0.6931471805599453,
'diterapkan': 0.6931471805599453 }
Case 2: I wanna filter Dict1 using the value of Dict2, Ex : filter the 5 best value using value of dict2案例 2:我想使用 Dict2 的值过滤 Dict1,例如:使用 dict2 的值过滤 5 个最佳值
The result that i hope:我希望的结果:
Dict2={
'untuk': 1.0986122886681098,
'tidak': 1.0986122886681098,
'meningkatkan': 1.0986122886681098,
'kesejahteraan': 1.0986122886681098,
'setuju': 0.6931471805599453,
}
You can achieve using the following -您可以使用以下方法实现 -
1st Result:第一个结果:
Result_1 = {key: value for key, value in Dict1.items() if Dict2.get(key, 0) > 1}
{'menolak': 0.6931471805599453,
'omnibus': -0.15415067982725836,
'sekolah': 1.0986122886681098,
'diperintahkan': 1.0986122886681098,
'untuk': 1.0986122886681098,
'tidak': 1.0986122886681098,
'layak': 1.0986122886681098,
'meningkatkan': 1.0986122886681098,
'kesejahteraan': 1.0986122886681098,
'setuju': 0.6931471805599453,
'diterapkan': 0.6931471805599453}
2nd Result:第二个结果:
Result_2 = {k: Dict1[k] for k in sorted(Dict2.keys(), key = lambda x: Dict2[x], reverse = True)[:5] if k in Dict1}
{'setuju': 0.6931471805599453,
'meningkatkan': 1.0986122886681098,
'tidak': 1.0986122886681098,
'kesejahteraan': 1.0986122886681098,
'untuk': 1.0986122886681098}
try this尝试这个
result = {}
for key1, value1 in Dict1.items():
for key2, value2 in Dict2.items():
if Dict2[key2] > 1:
result[key1] = Dict1[key1]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.