1

Python 2.7 で、次のような 2 つのメンバー セットを含むリストがあるとします。

d = [(1, 'value1'), (2, 'value2'), (3, 'value3')]

次のような辞書に変換する最も簡単な方法は何ですか?

d = {1 : 'value1', 2 : 'value2', 3 : 'value3'}

それとも逆にこう?

d = {'value1' : 1, 'value2': 2, 'value3' : 3}

ありがとう

4

6 に答える 6

6

コンストラクターはdictシーケンスを取ることができます。それで...

dict([(1, 'value1'), (2, 'value2'), (3, 'value3')])

逆は、辞書の理解で行うのが最適です

{k: v for v,k in [(1, 'value1'), (2, 'value2'), (3, 'value3')]}
于 2013-05-20T17:40:55.973 に答える
4

リストがタプルのリストの形式である場合は、単純に を使用できますdict()

In [5]: dict([(1, 'value1'), (2, 'value2'), (3, 'value3')])
Out[5]: {1: 'value1', 2: 'value2', 3: 'value3'}

辞書内包表記を使用して、逆の辞書を作成できます。

In [13]: { v : k for (k,v) in [(1, 'value1'), (2, 'value2'), (3, 'value3')] }
Out[13]: {'value1': 1, 'value2': 2, 'value3': 3}
于 2013-05-20T17:41:22.493 に答える
3
>>> lis = [(1, 'value1'), (2, 'value2'), (3, 'value3')]

最初のものに使用dict()します:

>>> dict(lis)
{1: 'value1', 2: 'value2', 3: 'value3'}

そして、2番目のものの口述理解:

>>> {v:k for k,v in lis}
{'value3': 3, 'value2': 2, 'value1': 1}

dict()iterable を dict に変換します:

>>> print dict.__doc__
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
dict(**kwargs) -> new dictionary initialized with the name=value pairs
    in the keyword argument list.  For example:  dict(one=1, two=2)
于 2013-05-20T17:41:58.380 に答える
2
lst = [(1, 'value1'), (2, 'value2'), (3, 'value3')]

それをdictにするには、単に

dict(lst)

それを逆にするために、あなたはすることができます

dict((b,a) for a,b in lst)
于 2013-05-20T17:41:39.730 に答える
1

dict(my_list)おそらくうまくいくはずです。また、セットではなくタプルのリストがあると思います。

于 2013-05-20T17:41:08.430 に答える
0
>>> d = [(1, 'value1'), (2, 'value2'), (3, 'value3')]
>>> dict(d)
{1: 'value1', 2: 'value2', 3: 'value3'}
>>> dict(map(reversed, d))
{'value3': 3, 'value2': 2, 'value1': 1}
于 2013-05-20T20:56:27.423 に答える