2

タプルをキーと値のペアに動的に変換するにはどうすればよいですか?

私が持っているとしましょう:

tuple = ('name1','value1','name2','value2','name3','value3')

私はそれを辞書に入れたい:

dictionary = { name1 : value1, name2 : value2, name3 : value3 )
4

4 に答える 4

15

タプルをキーと値のペアに変換し、dictコンストラクターに辞書を作成させます。

it = iter(tuple_)
dictionary = dict(zip(it, it))

zip(it, it)イディオムは、フラットな iterable からアイテムのペアを生成し、コンストラクターに渡すことができる一連のペアを提供しますdict。これの一般化は、itertools ドキュメントのグルーパー レシピとして利用できます。

入力が十分に大きい場合は、に置き換えzipitertools.izip、一時リストの割り当てを回避します。t[i]へのマッピングに基づく式とは異なり[i + 1]、上記はシーケンスだけでなく、あらゆる iterable で機能します。

于 2012-11-22T09:15:15.883 に答える
3
dictionary = {tuple[i]: tuple[i + 1] for i in range(0, len(tuple), 2)}

別の簡単な方法:

dictionary = dict(zip(tuple[::2],tuple[1::2]))
于 2012-11-22T10:24:54.807 に答える
2

単純なループを実行するだけです。

my_dic = {}
tuple = ('name1','value1','name2','value2','name3','value3')
if len(tuple) % 2 == 1:
    my_dic[tuple[-1]] = None
for i in range(0, len(tuple) - 1, 2):
    my_dic[tuple[i]] = tuple[i + 1]
print my_dic
于 2012-11-22T09:16:47.033 に答える