【问题标题】:How to filter dictionary using value of another dictionary in python?如何使用python中另一个字典的值过滤字典?
【发布时间】:2021-01-23 02:42:23
【问题描述】:

案例 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}

我希望的结果:

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,
}

【问题讨论】:

标签: python dictionary


【解决方案1】:

您可以使用以下方式实现-

第一个结果:

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}

【讨论】:

    【解决方案2】:

    试试这个

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-30
      • 1970-01-01
      • 1970-01-01
      • 2019-05-08
      相关资源
      最近更新 更多