为了账号安全,请及时绑定邮箱和手机立即绑定

需要一个值为两个列表的 defaultdict

需要一个值为两个列表的 defaultdict

白板的微信 2021-08-14 21:13:57
在 Python 中,我想要类似的东西dict = defaultdict((list,list))本质上,每个键我都想要两个列表!使用上面的代码片段,我得到错误第一个参数必须是可调用的。我怎样才能做到这一点?
查看完整描述

2 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

作为参数提供给defaultdict创建空列表的函数:


from collections import defaultdict


def pair_of_lists():

    return [[], []]


d = defaultdict(pair_of_lists)


d[1][0].append(3)

d[1][1].append(42)


print(d)

# defaultdict(<function pair_of_lists at 0x7f584a40b0d0>, {1: [[3], [42]]})


查看完整回答
反对 回复 2021-08-14
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

它不是某种类型推断,您只是提供一个生成默认值的函数。While int, list,dict没有参数 generate 0, [], {},这在 defaultdict 声明中经常被利用。Python 没有内置的构造函数用于列表对等。所以它很简单


di = defaultdict(lambda : ([1,2,3], ['a', 'cb']))

虽然 Python 允许列表元组(对),但您可能会遇到一些问题,例如列表元组的散列。为了安全起见,您可以将默认设置为两个列表的列表。请注意,您已将其设置为特定列表,无论是否为空,而不是列表类型/构造函数。它实际上是关于设置默认值而不是类型声明——python 列表是无类型的。


from collections import defaultdict

l1 = []

l2 = ["another", "default", "list"]

di = defaultdict(lambda : [ l1, l2] )

print (di[3])


查看完整回答
反对 回复 2021-08-14
  • 2 回答
  • 0 关注
  • 180 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号