【问题标题】:Pythonically transforming a dictionary以 Python 方式转换字典
【发布时间】:2012-07-18 15:00:02
【问题描述】:

我有 2 个字典:

dict1 = {'field1':'value1', 'field2':'value2',...... }
dict2 = {'field1':'value1_1', 'field2':'value2_2','field3':'value3_3'}

我希望 dict1 的 field1 和 field2 的值是 dict2 的 field1 和 field2 的值。

所以我希望 dict1 是:dict1 = {'field1':'value1_1', 'field2':'value2_2'},但 dict1 有许多其他键/值对不在 dict2 中,我想保持它们相同。

最pythonic的方法是什么?

【问题讨论】:

    标签: python


    【解决方案1】:

    可能是这样的:

    dict1.update({key : dict2[key] for key in dict1 if key in dict2})
    

    或者用一个简单的循环:

    for key in dict1:
        if key in dict2:
            dict1[key] = dict2[key]
    

    【讨论】:

    • dict1.update( <stuff_from_your_answer> ) 如果更新 dict1 很重要 - 尽管您的简单循环做同样的事情。
    • 谢谢。但是有一个新的限制,请参阅更新的原始帖子。
    • 我不认为这在语法上是正确的。它会吐出错误。
    • try: dict1[key] = dict2[key] except KeyError: pass 可能会更有效,如果您可以假设 dict1 键经常出现在 dict2 中,我认为。但无论如何,这是一种优化。
    【解决方案2】:

    你可以试试听写理解:

    dict1 = {key : value for key, value in dict2.iteritems() if key in dict1}
    

    看到mouad的回答编辑:

    dict1 = {key : dict2[key] for key in dict1}
    

    【讨论】:

      猜你喜欢
      • 2015-01-08
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 2013-02-19
      • 2016-10-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多