【发布时间】:2013-09-02 11:16:55
【问题描述】:
如果defaultdict 可以按照以下几行初始化会很方便
d = defaultdict(list, (('a', 1), ('b', 2), ('c', 3), ('d', 4), ('a', 2),
('b', 3)))
生产
defaultdict(<type 'list'>, {'a': [1, 2], 'c': [3], 'b': [2, 3], 'd': [4]})
相反,我得到了
defaultdict(<type 'list'>, {'a': 2, 'c': 3, 'b': 3, 'd': 4})
为了得到我需要的东西,我最终不得不这样做:
d = defaultdict(list)
for x, y in (('a', 1), ('b', 2), ('c', 3), ('d', 4), ('a', 2), ('b', 3)):
d[x].append(y)
这比 IMO 需要的步骤多出一步,我在这里遗漏了什么吗?
【问题讨论】:
-
如何知道在列表中使用追加?那么其他类型呢?
-
@JonClements,好点子。但是有人会认为
list是一个足够常见的用例,可以证明便利方法(可能是类方法)是合理的? -
这种便捷的方法难道不正是您刚刚在帖子末尾写的吗?为什么不将这三行封装在一个函数中,然后就结束了?
-
@1_CR:我想说
defaultdict(list)非常常见。但是以您建议的方式初始化该数据结构......不太好。
标签: python defaultdict