質問編集履歴

1 情報の修正

退会済みユーザー

退会済みユーザー

2018/04/25 17:33  投稿

辞書の2つのkeyを使いvalueを小さいもの順に並べたい
### 前提・実現したいこと
辞書の2つのkeyを使いvalueを小さいもの順に並べたい。
今dct変数に
```ここに言語を入力
{‘A’:{‘a’:0.02,’b’:0.03,’c’:0.01,’d’:0.08},‘B’:{‘a’:0.4,’b’:0.2,’c’:0.8,’e’:0.9},‘C’:{‘a’:0.1,’b’:0.07,’h’:0.6,’j’:0.9},‘D’:{‘h’:1.2,’j’:1.5,’k’:1.4,’l’:1.8},‘E’:{‘o’:11,’p’:12,’q’:16,’r’:18}}
{‘A’:{‘a’:0.02,’b’:0.03,’c’:0.01,’d’:[0.04,0.05]},‘B’:{‘a’:0.4,’b’:0.2,’c’:0.8,’e’:0.9},‘C’:{‘a’:0.1,’b’:0.07,’h’:0.6,’j’:0.9},‘D’:{‘h’:1.2,’j’:1.5,’k’:[1.3,1.8],’l’:1.8},‘E’:{‘o’:11,’p’:12,’q’:16,’r’:18}}
```
という辞書がある。
このdct辞書のA・B・C・Dの要素のvalueの中の入れ子の辞書のvalueを小さい順に並べたい。
このdct辞書のA・B・C・Dの要素のvalueの中の入れ子の辞書のvalueを小さい順に並べたい。そして、入れ子の辞書のvalueがリスト型のもの(例えば、Aのvalueの’d’:[0.04,0.05]やのvalueの’k’:[1.3,1.8])はソートに含めない。
例えば、
Aの辞書をソートするなら、
最終的なアウトプットはprint文で、
```ここに言語を入力
A:’c’:0.01
 ‘a’:0.02
B:’b’:0.2
  ‘a’:0.4
    ・
    ・
    ・
```
のように小さいものの上位2つまでを出力させたい。
### 発生している問題・エラーメッセージ
特にエラーは発生していない。
### 該当のソースコード
```ここに言語名を入力
for key,value in dct.iteritems():
  for k, v in sorted(value.items(), key=lambda x: x[1]):
    print(str(k) + ": " + str(v))
  if type(value) == list:
     for k, v in sorted(value.items(), key=lambda x: x[1]):
       print(str(k) + ": " + str(v))
```
のように書けばできると思ったが、小さいものの上位2つを取ってくる方法がわからなかった。
### 試したこと
上記のコードの実行
  • Python

    27216 questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る