内包表記でできるじゃん。
>>> D
{'a': 1, 'b': 2, 'c': 3}
>>> {value:key for key,value in D.items()}
{1: 'a', 2: 'b', 3: 'c'}
でも個人的には以下でやっちゃうのが好き
>>> dict(map(reversed,D.items()))
{1: 'a', 2: 'b', 3: 'c'}
#lambdaでもできる
>>> dict(map(lambda x:x[::-1] ,D.items()))
{1: 'a', 2: 'b', 3: 'c'}
valueが被ってた場合は、どちらかで上書きされる。
(辞書は順番が保証されないため一概にどちらとは言えない)
>>> DW
{'a': 1, 'b': 2, 'c': 3, 'd': 2}
>>> {value:key for key,value in DW.items()}
{1: 'a', 2: 'd', 3: 'c'}
>>> dict(map(reversed,DW.items()))
{1: 'a', 2: 'd', 3: 'c'}
もちろん元のvalueが辞書のkeyにできる値であることが条件。
(リストとかは辞書のkeyにできないので)
内包表記が好きじゃないならこういった書き方もできるなって話。
以上。