我发现自己经常重复以下代码(或类似代码):
users = {}
for d in data:
if d['user'] in users.keys():
users[d['user']].append(d)
else:
users[d['user']] = [d]
在这里,数据是一个字典列表,我想将列表拆分为较小的列表,映射到它们的 d["user"] 值作为字典中的键。
我想要一种在一行中执行此操作的方法,因为这些多行让我烦恼。
但是,我能想到的唯一方法是将我的 O(N) 算法(上图)更改为 O(N^2) 算法,例如:
users = {d["user"]: [d for d in data if d["user"] == u] for d in data}
显然,这种低效率是不可接受的……