python
1d = {'key1': 1,'key2': 14,'key3': 47,'key4': 2,'key5': 90}
上記のdictが存在している場合にkey3まで取り出し、新たなdictにする方法がわかりません。
宜しくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
Python3.5以前ではdictの要素に値の順序の概念はありませんでした。
CPython3.6は処理系の仕様で、Python3.7は言語仕様でdictは順序を持つようになっています。
なので、最初にやるべきことは「自分がプログラムを動かすpythonのバージョンを確認すること」です。
もし辞書に順序があるバージョンを使っていれば、
python
1d = {'key1': 1,'key2': 14,'key3': 47,'key4': 2,'key5': 90} 2result = {k:d[k] for k in list(d)[:3]} # => {'key1': 1, 'key2': 14, 'key3': 47}
で希望の動作になると思います。
python
1d = {'key1': 1,'key2': 14,'key3': 47,'key4': 2,'key5': 90}
が文字通りkey1
, key2
,...というキーを持つ辞書なら
python
1d = {'key1': 1,'key2': 14,'key3': 47,'key4': 2,'key5': 90} 2result = {"key"+str(i):d["key"+str(i)] for i in range(1,4)} # => {'key1': 1, 'key2': 14, 'key3': 47}
という手もあります。
投稿2018/09/26 06:52
編集2018/09/26 06:57総合スコア30933
0
ベストアンサー
(Python3.7でdictに順序を持つようになったのですね…)
「上位**件」が「降順に並べたときの最初からN個」といった意味ならば、以下はどうでしょうか。
python
1# coding: utf-8 2N = 3 3d = {'key1': 1,'key2': 14,'key3': 47,'key4': 2,'key5': 90} 4 5# keyでソートしたときの上位N個 6lists = sorted(d.items(), key=lambda x: x[0], reverse=True) 7new_dict = {} 8for i in range(N): 9 new_dict[lists[i][0]] = lists[i][1] 10print(new_dict) 11 12# valueでソートしたときの上位N個 13new_dict = {} 14lists = sorted(d.items(), key=lambda x: x[1], reverse=True) 15for i in range(N): 16 new_dict[lists[i][0]] = lists[i][1] 17print(new_dict)
Nが小さいならば、heapq.nlargest モジュールを使ったほうが高速です。
python
1# coding: utf-8 2import heapq 3 4N = 3 5d = {'key1': 1,'key2': 14,'key3': 47,'key4': 2,'key5': 90} 6 7# keyでソートしたときの上位N個 8lists = heapq.nlargest(N, d.items(), key=lambda x: x[0]) 9new_dict = {} 10for l in lists: 11 new_dict[l[0]] = l[1] 12print(new_dict) 13 14# valueでソートしたときの上位N個 15lists = heapq.nlargest(N, d.items(), key=lambda x: x[1]) 16new_dict = {} 17for l in lists: 18 new_dict[l[0]] = l[1] 19print(new_dict)
投稿2018/09/26 07:33
編集2018/09/26 07:57総合スコア312
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/26 06:56
2018/09/26 07:05
2018/09/26 07:33