【问题标题】:Making list to a dictionary [duplicate]制作字典列表[重复]
【发布时间】:2016-07-02 21:09:42
【问题描述】:

我有一个这样的列表

list = [('a', 3418), ('b', 3544), ('c', 1153), ('d', 2155), ('e', 2254), ('f', 2654), ('g', 2982), ('h', 3267), ('i', 3056), ('j', 820), ('k', 2987)]

我需要这样的字典:

dictionary = {'a' : 3418, 'b' : 3544, 'c' : 1153}

尝试使用

dict = {k:v for k,v in (x.split(',') for x in list) }

但报错

AttributeError: 'tuple' 对象没有属性 'split'

【问题讨论】:

    标签: python list dictionary


    【解决方案1】:

    最简单的方法:

    In [1]: x =  [('a', 3418), ('b', 3544), ('c', 1153), ('d', 2155), ('e', 2254), ('f', 2654), ('g', 2982), ('h', 3267), ('i', 3056), ('j', 820), ('k', 2987)]
    
    In [2]: dict(x)
    Out[2]: 
    {'a': 3418,
     'b': 3544,
     'c': 1153,
     'd': 2155,
     'e': 2254,
     'f': 2654,
     'g': 2982,
     'h': 3267,
     'i': 3056,
     'j': 820,
     'k': 2987}
    

    来自dict 文档字符串:

    class dict(object)
     |  dict() -> new empty dictionary
     |  dict(mapping) -> new dictionary initialized from a mapping object's
     |      (key, value) pairs
     |  dict(iterable) -> new dictionary initialized as if via:
     |      d = {}
     |      for k, v in iterable:
     |          d[k] = v
    

    【讨论】:

      【解决方案2】:

      恕我直言,最简单的方法是使用字典理解:

      >>> l = [('a', 3418), ('b', 3544), ('c', 1153), ('d', 2155), ('e', 2254), ('f', 2654), ('g', 2982), ('h', 3267), ('i', 3056), ('j', 820), ('k', 2987)]
      >>> d = {x[0] : x[1] for x in l}
      >>> d
      {'a': 3418, 'c': 1153, 'b': 3544, 'e': 2254, 'd': 2155, 'g': 2982, 'f': 2654, 'i': 3056, 'h': 3267, 'k': 2987, 'j': 820}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-20
        • 2022-11-30
        • 2015-07-29
        • 1970-01-01
        • 2020-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多