前提・実現したいこと
前回の質問でいただいた回答を通して
Pythonで辞書型からソートしたデータをリストに入れる方法について学んだのですが、
入力するデータを変更したところ、エラーが発生してしまい、それを修正する方法を探しています。
発生している問題・エラーメッセージ
以下のエラーが発生しており、コードの
print(f'{outer_key}:') for k, v in inner_sorted_items[:1]: print(f'- {k}')
の部分で確認したところ、
outer_keyはあってもkのない組み合わせ(例えば('Tokyo', ' '))があるようで、
リストの格納時にエラーが起きている可能性があるというところまではたどり着きましたが、
その後の具体的な修正方法がわかりません。
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-42-5a1a7432f6fe> in <module>() 1 ret = [] 2 for outer_key, inner_dict in words_matrix.items(): ----> 3 max_k = max(inner_dict, key=inner_dict.get) # 値が最大をとるキーを返す 4 ret.append((outer_key,max_k)) 5 print(ret) ValueError: max() arg is an empty sequence
該当のソースコード
python
1#前回 words_matrix = {'Tokyo': {'Shinjuku': 0.9, 'Ginza': 0.98, 'Shibuya':0.7}, 'Kanagawa':{'Yokohama': 0.88, 'Kamakura': 0.9, 'Minatomirai':0.66}} 2 3#同じ形式で追加のデータを加えた 4words_matrix = {'Tokyo': {'Shinjuku': 0.9, 'Ginza': 0.98, 'Shibuya':0.7}, 'Kanagawa':{'Yokohama': 0.88, 'Kamakura': 0.9, 'Minatomirai':0.66 ...}} 5 6 7import operator 8for outer_key, inner_dict in words_matrix.items(): 9 inner_sorted_items = sorted( 10 inner_dict.items(), 11 reverse=True, 12 key=operator.itemgetter(-1) 13 ) 14 15 print(f'{outer_key}:') 16 for k, v in inner_sorted_items[:1]: 17 print(f'- {k}') 18 19ret = [] 20for outer_key, inner_dict in words_matrix.items(): 21 max_k = max(inner_dict, key=inner_dict.get) # 値が最大をとるキーを返す 22 ret.append((outer_key,max_k)) 23print(ret)
補足情報(FW/ツールのバージョンなど)
python 3.6.3
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/07/13 09:44