Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 创建具有列表和int的元组的defaultdict_Python 3.x_Defaultdict - Fatal编程技术网

Python 3.x 创建具有列表和int的元组的defaultdict

Python 3.x 创建具有列表和int的元组的defaultdict,python-3.x,defaultdict,Python 3.x,Defaultdict,我知道要使用默认值创建一个defaultdict,我可以使用以下选项: defaultdict(lambda : 0) 对于具有默认值的元组的defaultdict,我可以使用以下内容: defaultdict(lambda: (0,0)) 但我正在努力解决这个问题,如何创建一个包含列表和int的tuple的defaultdict?我需要像这样的东西: {key1:['a','b','c','a'],100),key2:(['a','a','a','a'],2100),(key3:['add

我知道要使用默认值创建一个
defaultdict
,我可以使用以下选项:

defaultdict(lambda : 0)
对于具有默认值的元组的defaultdict,我可以使用以下内容:

defaultdict(lambda: (0,0))
但我正在努力解决这个问题,如何创建一个包含列表和int的tuple的
defaultdict
?我需要像这样的东西:

{key1:['a','b','c','a'],100),key2:(['a','a','a','a'],2100),(key3:['adds','bas','cs','a'],300),key4:(['a'],30)}

所以我需要检查列表中的一个项目,如果它不存在,我需要增加int值。如果您想做到这一点,我使用
defaultdict
解决这种情况的想法正确吗??

d["some_key"][1] += 1
即使键不存在并获取
[set(),1]
作为值,也要执行以下操作:

d = collections.defaultdict(lambda : [set(),0])
  • 注#1:
    defaultdict(lambda:0)
    对于
    defaultdict(int)
  • 注意#2:我使用了
    列表
    而不是
    元组
    作为默认值。如果我使用了
    元组
    ,我将很难将第二项增加1,因为元组是只读的。 注意#3:
    tuple
    主要用作键(因为它们是不可变的,因此是可散列的),而不是用作值,在值中可以存储任何需要的内容,无论是否可散列

你的意思是
defaultdict(lambda:[],0])
?顺便说一句,
defaultdict(lambda:0)
可以写入
defaultdict(int)
。我无法理解您的问题。我使用了
defaultdict(lambda:[],0])
,这正是我想要的。非常感谢你。这是一个好方法吗?正如我前面解释的,我需要根据列表中存在的不是元组的项来更新元组中的int值,顺便说一句,否则您将无法更新它。这是一张单子。方法是好的!我可以把
defaultdict(lambda:[],0])
做成类似
defaultdict(lambda:[set(),0])
的东西吗?是的,我现在注意到了!!这是一个列表而不是元组!!我的错!!很抱歉完全地这很有道理。非常感谢!!当有人能如此完美地解释事情时,一切都变得如此简单!!非常感谢。