2017-01-28 8 views
2

たとえば、辞書が{0:0, 1:0, 2:0}の場合、リストは[0, 0, 0]となります。どのように辞書をリストに変換しますか?

これが不可能な場合は、どのようにしてディクショナリの最小値をとりますか?つまり、辞書:{0:3, 1:2, 2:1}1を返しますか?

+2

'dict.values()'リストとしてあなたに値を与える(多かれ少なかれ) –

+3

可能な複製を行うことの必要性を保存defineanonymous機能への道であります[Python:dictから値のリストを取得する最も簡単な方法](http://stackoverflow.com/questions/16228248/python-simplest-way-to-get-list-of-values-from-dict) –

答えて

2

あなたは、単にで最小を取ることができます:

min(dic.values()) 

そしてでリストに変換します

list(dic.values()) 

しかし辞書には、の順順不同であるため、結果のリストの要素は未定義です。

あなたは単にdic.values()list(..)を呼び出す必要はありません十分であろう。

dic.values() 
1
>>> a = {0:0, 1:2, 2:4} 
>>> a.keys() 
[0, 1, 2] 
>>> a.values() 
[0, 2, 4] 
+0

yeah 2番目の後にそれを見た:p –

+0

あなたは*クイック*です! :D –

-1

辞書は以下のように定義されます。

dict{[Any]:[Any]} = {[Key]:[Value]} 

あなたの質問に問題がありますキーが何であるかを明確にしていないこと

1:キーが単なる数字で、の隙間のない昇順であると仮定すると、dict.values()で十分です。他の著者が既に指摘しているとおりです。

2:

i = 0 
list = [] 
while i < max(mydict.keys()): 
    list.append(mydict[i]) 
    i += 1 

3:厳密に昇順に鍵を想定すると数字だけですがない:
はまだあり キーは、厳密に昇順ではなく、正しい順序で数字だけされていると仮定すると、方法はありますが、最初にキーを取得し、最大のキーとtry-exceptブロック

4:これらのいずれも該当しない場合は、おそらくdictはあなたが探しているものではなく、2dまたは3d配列で十分でしょうか? これはまた、ソリューションの1つが機能するかどうかを数えます。 Dictはあなたがやっていることのために悪い選択のようです

+0

'i ++'は有効ではありませんPython – Copperfield

+0

Ups、申し訳ありません。私のスウィフトの影響... – Narusan

+0

また、最小/最大を見つけるためにお互いに比較することができる以外のキー(または値)について何も仮定する必要はありません、あなたはいくつかの奇妙な接線に行く – Copperfield

2

リストにdictionaryの変換は非常に簡単です、あなたは3つのその.keys()ための味、.values().items()

>>> test = {1:30,2:20,3:10} 
>>> test.keys() # you get the same result with list(test) 
[1, 2, 3] 
>>> test.values() 
[30, 20, 10] 
>>> test.items() 
[(1, 30), (2, 20), (3, 10)] 
>>> 

(のpython 3にあなたがそれらのリストを呼び出す必要があります)

発見を持っていますminまたはmaxファンクションの最大値または最小値も簡単です。

>>> min(test.keys()) # is the same as min(test) 
1 
>>> min(test.values()) 
10 
>>> min(test.items()) 
(1, 30) 
>>> max(test.keys()) # is the same as max(test) 
3 
>>> max(test.values()) 
30 
>>> max(test.items()) 
(3, 10) 
>>>  

(パイソン2に、効率的に、代わりにそれらの.iter*バージョンを使用)

最も興味深いものは、最小/最大値のキーを見つけることですし、最小/最大があまりにも

>>> max(test.items(),key=lambda x: x[-1]) 
(1, 30) 
>>> min(test.items(),key=lambda x: x[-1]) 
(3, 10) 
>>>  
をそのカバーを得ました

ここでは、主関数に何を与えても、それを比較したい要素(それを他のものに変換することもできます)を返す関数であるキー関数が必要です。

lambdaはあなたにこの

>>> def last(x): 
     return x[-1] 

>>> min(test.items(),key=last) 
(3, 10) 
>>> 
+0

.items()は天才です。私はそのようなことが存在するのか知らなかった。ありがとう! – Narusan

関連する問題