私はこのようなものを含むいくつかのPythonコードを書いていました
values = {}
for element in iterable:
values.setdefault(element.name, []).append(element)
以前に入力をソートできたので、このように実装しました
values = {}
cur_name = None
cur_list = None
for element in iterable:
if element.name != cur_name:
values[cur_name] = cur_list
cur_name = element.name
cur_list = []
cur_list.append(element)
if cur_list:
values[cur_name] = cur_list
del values[None]
ここで、入力はすでに によってソートされていelement.name
ます。
2 番目のアプローチは、最初のアプローチよりもはるかに高速であり、使用するメモリも少なくなりました。
これの理由は何ですか?
または、2番目のアプローチで何らかの間違いを犯しましたか?