時のアクセス辞書は、私はこのようなコードを持っています最初のコードボックスで、ディクテーションの理解に?Pythonのdictの理解作成
0
A
答えて
1
あなたがやっているすべては、あなたが「最大の理解」を使用することができますmax
ですので:しかし
dict_of_x = (
{'key':0,'value':0,'duration_to_cancel':10},
{'key':0,'value':1,'duration_to_cancel':15},
{'key':0,'value':2,'duration_to_cancel':1},
{'key':1,'value':3,'duration_to_cancel':2},
{'key':2,'value':4,'duration_to_cancel':None}
)
def yours():
dictionary = {}
for x in dict_of_x:
if x['duration_to_cancel'] == None or x['duration_to_cancel'] > 5:
key = x['key']
value = x['value']
if key not in dictionary or value > dictionary[key]:
dictionary[key] = value
return dictionary
print yours()
{0: 1, 2: 4}
def mine():
dictionary = {key : max(x['value'] for x in dict_of_x if x['key'] == key) \
for key in set(x['key'] for x in dict_of_x if x['duration_to_cancel'] == None or x['duration_to_cancel'] > 5)}
return dictionary
print mine()
{0: 1, 2: 4}
注意をそのリスト/ dict/set/maxの理解は読みやすさにとって必ずしも良いことではありません。
%timeit yours()
1000000 loops, best of 3: 855 ns per loop
%timeit mine()
100000 loops, best of 3: 2.32 µs per loop
0
高い値が低い値を上書きするよう、それが動作するはずです、これを試してみてください:
dictionary = {x['key'] : x['value'] for x in sorted(dict_of_x, key=lambda x: x['value']) \
if (True if x['duration_to_cancel'] == None else x['duration_to_cancel'] > 5)}
+1
これは、私の答えに記述されているのと同じような時間ペナルティで来るでしょうまた、x ['duration_to_cancel'] ==他の場合はtrue x ['duration_to_cancel ']> 5) 'x [' duration_to_cancel '] == Noneまたはx [' duration_to_cancel ']> 5' ... – Julien
+0
@Julien True ..私は2番目部。私はそれらの編集をOPに任せます。 –
関連する問題
- 1. リストの理解をPython Dict
- 2. Dictのは、Python 3.5ではdictの理解
- 3. dict作成中に別のものからPython dict値を作成する方法は?
- 4. リンクリストの理解/作成
- 5. 理解ハッシュ作成
- 6. Pythonのリストの理解と変数の作成
- 7. ループを使ったPythonディクショナリの作成文の理解
- 8. ifとbreakでPythonリストの理解を作成する
- 9. Python(Flask)のHTML IDからJSON dictを作成する
- 10. Pythonのdict()データからPDFファイルを作成するには
- 11. pandas DataFrameとネイティブPython用Mixinクラスの作成dict
- 12. マルチスレッドを使用したPython Dictの作成
- 13. Pythonプロパティの動作を理解する
- 14. Pythonの理解と、または操作
- 15. Python:この辞書をソート(dictのdict)
- 16. python - 別のdictにdictを追加
- 17. Pythonリバースエンジニアリストの理解
- 18. Python Maps()の理解
- 19. Pythonコードの理解
- 20. Pythonで辞書の理解の値のリストを作成する方法
- 21. Python jsonログの作成と処理
- 22. Google BigQuery - pythonクライアント - ジョブの作成/管理
- 23. RのPythonリストの理解?
- 24. Pythonでのアサーションエラーメッセージの理解
- 25. Pythonのネームスペースの理解
- 26. Pythonでの線の理解
- 27. コードの理解のpython
- 28. Pythonリストの理解とJSONの解析
- 29. pythonのdictのサブクラスとnamesapces
- 30. Pythonのdictオブジェクトの連合
あなたが直接それを複製することはできません。私のコードも減速が付属して、それをループに数回は、なりながら はまた、あなたの実装では、あなたは、一度だけあなたの辞書を通過します。 'dict'はまだ存在しません。 –
dictを並べ替えることができます。 –
その2番目の条件は次のように単純化することができます: 'dictionary [key] = max(value、dictionary.get(key、None)' – wwii