cul*_*rón 50 python dictionary
这个Python代码可以缩短,并且仍然可以使用itertools和sets读取吗?
result = {}
for widget_type, app in widgets:
if widget_type not in result:
result[widget_type] = []
result[widget_type].append(app)
Run Code Online (Sandbox Code Playgroud)
我只能想到这个:
widget_types = zip(*widgets)[0]
dict([k, [v for w, v in widgets if w == k]) for k in set(widget_types)])
Run Code Online (Sandbox Code Playgroud)
Dan*_*man 94
另一种方法defaultdict是使用setdefault标准词典的方法:
result = {}
for widget_type, app in widgets:
result.setdefault(widget_type, []).append(app)
Run Code Online (Sandbox Code Playgroud)
这取决于列表是可变的这一事实,因此从setdefault返回的是与字典中的列表相同的列表,因此您可以附加到它.
Mar*_*ers 55
你可以使用defaultdict(list).
from collections import defaultdict
result = defaultdict(list)
for widget_type, app in widgets:
result[widget_type].append(app)
Run Code Online (Sandbox Code Playgroud)
小智 6
可能有点慢但有效
result = {}
for widget_type, app in widgets:
result[widget_type] = result.get(widget_type, []) + [app]
Run Code Online (Sandbox Code Playgroud)