如何使用python中另一个字典的值筛选字典?

2024-06-16 09:22:55 发布

您现在位置:Python中文网/ 问答频道 /正文

案例1:我想使用Dict2的值过滤Dict1,例如:filter value>;1使用dict2的值

 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}

我希望的结果是:

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 }

案例2:我想使用Dict2的值过滤Dict1,例如:使用Dict2的值过滤5个最佳值

我希望的结果是:

Dict2={
 'untuk': 1.0986122886681098,
 'tidak': 1.0986122886681098,
 'meningkatkan': 1.0986122886681098,
 'kesejahteraan': 1.0986122886681098,
 'setuju': 0.6931471805599453,
}

Tags: 案例omnibusuntuklawdict1dict2sayadiperintahkan
2条回答

试试这个

result = {}

for key1, value1 in Dict1.items():
    for key2, value2 in Dict2.items():
        if Dict2[key2] > 1:
            result[key1] = Dict1[key1]

您可以使用以下方法实现:

第一个结果:

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}

第二个结果:

 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}

相关问题 更多 >