代码之家  ›  专栏  ›  技术社区  ›  Jake

python tuple到dict

  •  123
  • Jake  · 技术社区  · 14 年前

    对于元组, t = ((1, 'a'),(2, 'b')) dict(t) 退货 {1: 'a', 2: 'b'}

    有好的方法吗 {'a': 1, 'b': 2} (交换了密钥和VAL)?

    最终,我希望能够回来 1 鉴于 'a' 2 鉴于 'b' 转换成听写可能不是最好的方法。

    6 回复  |  直到 6 年前
        1
  •  239
  •   Greg Hewgill    14 年前

    尝试:

    >>> t = ((1, 'a'),(2, 'b'))
    >>> dict((y, x) for x, y in t)
    {'a': 1, 'b': 2}
    
        2
  •  64
  •   jterrace    13 年前

    稍微简单一点的方法:

    >>> t = ((1, 'a'),(2, 'b'))
    >>> dict(map(reversed, t))
    {'a': 1, 'b': 2}
    
        3
  •  38
  •   autholykos    12 年前

    如果您使用的是python 2.7,则更加简洁:

    >>> t = ((1,'a'),(2,'b'))
    >>> {y:x for x,y in t}
    {'a':1, 'b':2}
    
        4
  •  6
  •   Smi    6 年前
    >>> dict([('hi','goodbye')])
    {'hi': 'goodbye'}
    

    或:

    >>> [ dict([i]) for i in (('CSCO', 21.14), ('CSCO', 21.14), ('CSCO', 21.14), ('CSCO', 21.14)) ]
    [{'CSCO': 21.14}, {'CSCO': 21.14}, {'CSCO': 21.14}, {'CSCO': 21.14}]
    
        5
  •  2
  •   psun    9 年前

    如果同一个键有多个值,下面的代码会将这些值附加到与其键对应的列表中,

    d = dict()
    for x,y in t:
        if(d.has_key(y)):
            d[y].append(x)
        else:
            d[y] = [x]
    
        6
  •  0
  •   Vlad Bezden    7 年前

    以下是两种方法:

    >>> t = ((1, 'a'), (2, 'b'))
    
    >>> # using reversed function
    >>> dict(reversed(i) for i in t)
    {'a': 1, 'b': 2}
    
    >>> # using slice operator
    >>> dict(i[::-1] for i in t)
    {'a': 1, 'b': 2}