辞書でvalueからkeyを引く
valueが数値のとき,
「valueがもっとも小さいものから5つkeyが知りたい」
「valueがもっとも大きいものから5つkeyが知りたい」
という場合.*1
testdic = {'hoge':5, 'fuga':50, 'piyo':25} testlist = zip(testdic.keys(), testdic.values()) #[('fuga', 50), ('piyo', 25), ('hoge', 5)] testlist.sort(lambda a, b: cmp(a[1], b[1])) #[('hoge', 5), ('piyo', 25), ('fuga', 50)]
もっと簡単にもかけるようです.(コメントでアドバイスいただきました)
testdic = {'hoge':5, 'fuga':50, 'piyo':25} testlist = testdic.items() #[('fuga', 50), ('piyo', 25), ('hoge', 5)] testlist.sort(key=lambda a: a[1]) #[('hoge', 5), ('piyo', 25), ('fuga', 50)]
(うーん,items()とかいつも使っているのに,不覚...)
あとはスライシングするとか.
for k, v in testlist[:2]: print k
とかとか.
たまーにvalueからkeyを引きたいんだけど,
どうしようと思うときがあるのでめもめも.
*1:任意のvalueをもつkeyが複数有る場合は知らない