【问题标题】:How to create a dictionary from a list of keys and a dictionary of values in Python?如何从 Python 中的键列表和值字典创建字典?
【发布时间】:2014-12-17 18:05:13
【问题描述】:

我有一个键字典:值对和一个键列表,如下所示:

dict1 = {'a':(1, 2), 'b':(2,2), 'c':(3,3), 'd':(4,4)}
list1 = ['a', 'c']

我现在想创建一个只包含从 list1 中获取的键值对的新字典。所以最终结果是下面的list2:

list2 = {'a':(1, 2), 'c':(3,3)}

我们将不胜感激。我目前正在使用 python 2.5.4,如果这有什么不同吗?

提前谢谢你。汤姆

【问题讨论】:

  • 2.5?那是旧的。如果可能,请考虑升级到 2.7。

标签: python dictionary


【解决方案1】:

一个很好的表达方式,即使在 2.5 中你也有一个简单的解决方案

dict((k, dict1[k]) for k in list1)

dict 有一个初始化器,它接受一个可迭代的元组。内部表达式一次生成一个元组,查看list1 中的键并从dict1 中获取值

如果list1 包含不在dict1 中的键,则以上将导致KeyError,如果是这种情况,则以下将通过查看字典中的键并检查其在@987654328 中的存在来工作@

dict((k, v) for k, v in dict1.iteritems() if k in list1)

【讨论】:

  • 谢谢,太好了。并感谢此线程中的其他所有人帮助新手。
  • @TomCee,如果您认为它解决了您的问题,请接受答案
【解决方案2】:

你可以这样做:

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

(我把list2改名为dict2,好像更有意义)。

【讨论】:

    【解决方案3】:

    类似这样的:

    new_dict = {}
    for i in list1:
        new_dict[i] = dict1[i]
    

    【讨论】:

      【解决方案4】:

      你可以用一个简单的循环来做到这一点:

      result = {}
      
      for item in list1:
          result[item] = dict1[item]
      

      或者,在 2.7+ 中,使用 dict 理解:

      result = {key: value
                for key, value in dict1.items()
                    if key in list1}
      

      【讨论】:

        【解决方案5】:

        只需做一些简单的事情,例如:

        for item in list1:
            list2[item] = dict1[item]
        

        【讨论】:

          猜你喜欢
          • 2017-05-05
          • 2018-01-14
          • 1970-01-01
          • 1970-01-01
          • 2016-10-08
          • 2016-09-30
          • 2014-08-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多