2

辞書があるとします。

a = {'a':122,'b':123,'d':333,'e':'233'}

今、それを 1 対 1 の辞書に戻したいので、そうすることができます。

私が試したこと:

In [67]: ivd=[(v,k) for (k,v) in a.items()]

In [68]: ivd
Out[68]: [(122, 'a'), (123, 'b'), ('233', 'e'), (333, 'd')]

ivdこれを辞書に変換する方法がいくつかあるかもしれません。私の質問は

  1. ivdこれを辞書に変更するには?
  2. これを行うために利用できるPythonicソリューションは他にありますか? そこにあるべきだと思います。
4

4 に答える 4

11

dict コンストラクターを使用できます。

ivd = dict((v, k) for (k, v) in a.iteritems())

またはpython 2.7以降での辞書内包表記:

ivd = {v: k for (k, v) in a.items()}
于 2012-08-15T22:09:26.693 に答える
2

私が正しく理解していれば、あなたはもうすぐそこにいます:

>>> ivd={v:k for (k,v) in a.items()}
>>> ivd
{122: 'a', 123: 'b', 333: 'd', '233': 'e'}

(これについては、stummjr にクレジットを送信する必要があります: https://stackoverflow.com/a/11977757/289011 )

于 2012-08-15T22:10:34.247 に答える
0

なぜだけではないのですか

ivd = {a[key]:key for key in a}

あなたの辞書はどこですか?はるかに簡単に思えます。Python では、dict のキーを直接反復処理できます。

于 2012-08-15T22:40:37.013 に答える