2

このタプルを考えると:

my_tuple = ('chess', ['650', u'John - Tom'])

chessキーがどこにあるか辞書を作成したい。次のようになります。

my_dict = {'chess': ['650', u'John - Tom']}

私はこのコードを持っています

my_dict = {key: value for (key, value) in zip(my_tuple[0], my_tuple[1])} 

しかし、それには欠陥があり、次の結果になります。

{'c': '650', 'h': u'John - Tom'}

修正を手伝ってもらえますか?

4

4 に答える 4

4

2 つの値を持つタプル (または単一のタプル) のリストから、いつでも辞書を作成できます。

そのようです:

>>> my_tuple = ('chess', ['650', u'John - Tom'])
>>> d = dict([my_tuple])
>>> d
{'chess': ['650', u'John - Tom']}

この簡単な方法で、タプルのリストを持つこともできます...

>>> my_tuple_list = [('a','1'), ('b','2')]
>>> d = dict(my_tuple_list)
>>> d
{'a': '1', 'b': '2'}
于 2013-04-29T11:06:50.450 に答える
3

タプルが次のようになっている場合は、次のようになります。(key1,value1,key2,value2,...)

In [25]: dict((my_tuple[i],my_tuple[i+1]) for i in xrange(0,len(my_tuple),2))
Out[25]: {'chess': ['650', 'John - Tom']}

口述内包表記を使用する:

In [26]: {my_tuple[i]: my_tuple[i+1] for i in xrange(0,len(my_tuple),2)}
Out[26]: {'chess': ['650', 'John - Tom']}

タプルの項目数がそれほど多くない場合:

In [27]: { k : v for k,v in zip( my_tuple[::2],my_tuple[1::2] )}
Out[27]: {'chess': ['650', 'John - Tom']}

イテレータの使用:

In [36]: it=iter(my_tuple)

In [37]: dict((next(it),next(it)) for _ in xrange(len(my_tuple)/2))
Out[37]: {'chess': ['650', 'John - Tom']}
于 2013-04-29T11:05:26.670 に答える
2
>>> my_tuple = ('a', [1, 2], 'b', [3, 4])
>>> dict(zip(*[iter(my_tuple)]*2))
{'a': [1, 2], 'b': [3, 4]}

ただし、特定のケースでは:

{my_tuple[0]: my_tuple[1]}
于 2013-04-29T11:04:22.527 に答える