Python2で辞書のキーと値を入れ替える
これか
dict((v, k) for k, v in d.iteritems())
これだろうか
dict(zip(d.values(), d.keys()))
# coding=utf-8 from benchmarker import Benchmarker _dict = dict(((str(i), i) for i in range(0, 50000))) def exchange_keys_with_values_use_generator(d): return dict((v, k) for k, v in d.iteritems()) def exchange_keys_with_values_use_zip(d): return dict(zip(d.values(), d.keys())) for bm in Benchmarker(width=40, cycle=1000, extra=1): for _ in bm('use generator'): exchange_keys_with_values_use_generator(_dict) for _ in bm('use zip'): exchange_keys_with_values_use_zip(_dict)
generatorのほうがちょっとよさそう
## Remove min & max min cycle max cycle use generator 0.0141 (#746) 0.0377 (#47) use zip 0.0207 (#829) 0.0949 (#51) ## Average of 1000 (=1002-2*1) user sys total real use generator 0.0184 0.0002 0.0186 0.0188 use zip 0.0275 0.0006 0.0281 0.0283 ## Ranking real use generator 0.0188 (100.0%) ************************* use zip 0.0283 ( 66.5%) ***************** ## Ratio Matrix real [01] [02] [01] use generator 0.0188 100.0% 150.3% [02] use zip 0.0283 66.5% 100.0%