Pythonのenumerate()
を返すタプル:enumerate()のインデックスと値を入れ替えますか?インデックスと値の
enumerate('abc')
((0,'a'),(1,'b'),(2,'c'))
私の代わりにitem,index
順(('a', 0)
)でこれらのタプルを取得したいのですが。
どうすればいいですか?
私は次のように辞書を作成するために、逆にタプルを使用したい:
{'a':0,'b':1,'c':2}
Pythonのenumerate()
を返すタプル:enumerate()のインデックスと値を入れ替えますか?インデックスと値の
enumerate('abc')
((0,'a'),(1,'b'),(2,'c'))
私の代わりにitem,index
順(('a', 0)
)でこれらのタプルを取得したいのですが。
どうすればいいですか?
私は次のように辞書を作成するために、逆にタプルを使用したい:
{'a':0,'b':1,'c':2}
使用dict
それを逆に理解:
result = {v: i for i, v in enumerate('abc')}
@karakfaのポイントへの対応 - これは潜在的に上書きされます繰り返される要素。文字列がabca
の場合、a
に割り当てられたインデックス値には3
が含まれ、0
には含まれません。
だけのこと新しいキーがユニークでないかもしれないことに気づいてください! – karakfa
['multidict.MultiDict'](https://pypi.python.org/pypi/multidict)のようなものにそれを渡すために、逆タプルのリストの理解に変更することができます(私は使用していないことに注意してくださいそのパッケージに問題がある場合は、別のオプションがあります)。 –
あなたのために仕事をするには、常に古くからある匿名の機能があります。最もクリーンな解決策ではありませんが、それは仕事を完了させます。 itertools
ライブラリ使用する
>>> dict((v, i) for i, v in enumerate('abc'))
{'a': 0, 'b': 1, 'c': 2}
発電機を使用
import itertools
dict(zip('abc', itertools.count()))
itertools.count()
は、1、0 2を生成するジェネレータオブジェクトです...とzip
機能だけ...よく一緒に2つをジップ。
一つの解決策である:
dict(map(lambda x: (x[1], x[0]), enumerate('abc')))
これはいいですね。 –
また、リスト内包して試すことができます:
はnew_data=((0,'a'),(1,'b'),(2,'c'))
print(tuple([(i[1],i[0])for i in new_data]))
出力:
(('a', 0), ('b', 1), ('c', 2))
単に: '{vは:列挙におけるkのためにK、V( 'ABC')}' – alfasin