gpt4 book ai didi

python - 一步初始化附加到列表的defaultdict?

转载 作者:太空狗 更新时间:2023-10-29 17:23:27 26 4
gpt4 key购买 nike

如果 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 看来,这比必要的步骤多了一步,我是不是漏掉了什么?

最佳答案

您显然缺少的是 defaultdictdict 的一个简单(不是特别“神奇”)的子类。第一个参数所做的只是为缺失 键提供一个工厂函数。当您初始化一个 defaultdict 时,您正在初始化一个 dict

如果你想生产

defaultdict(<type 'list'>, {'a': [1, 2], 'c': [3], 'b': [2, 3], 'd': [4]})

你应该像初始化任何其他值为列表的 dict 一样初始化它:

d = defaultdict(list, (('a', [1, 2]), ('b', [2, 3]), ('c', [3]), ('d', [4])))

如果您的初始数据必须采用第二个元素始终为整数的元组形式,则只需使用 for 循环即可。你称之为额外的一步;我称之为清晰明了的方法。

关于python - 一步初始化附加到列表的defaultdict?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18520825/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com