Python 如何在dict.fromkeys中使用defaultdict?
我想用一个字典计算3个不同样本的属性值(这里的深度)的直方图Python 如何在dict.fromkeys中使用defaultdict?,python,Python,我想用一个字典计算3个不同样本的属性值(这里的深度)的直方图 SamplesList=('Sa','Sb','Sc')) 从集合导入defaultdict DepthCnt=dict.fromkeys(示例列表,defaultdict(int)) 此代码将使DepthCnt包含同一个的3个defaultdict(int),因此我无法计算不同的样本 我怎样才能把它做好 可以使用DepthCnt[sample][depth]或DepthCnt[depth][sample] 我测试了以下三种方法:
SamplesList=('Sa','Sb','Sc'))
从集合导入defaultdict
DepthCnt=dict.fromkeys(示例列表,defaultdict(int))
此代码将使DepthCnt包含同一个的3个defaultdict(int)
,因此我无法计算不同的样本
我怎样才能把它做好
可以使用DepthCnt[sample][depth]
或DepthCnt[depth][sample]
我测试了以下三种方法:
从集合导入defaultdict
DepthCnt={key:defaultdict(int)for key in SamplesList}
yDepthCnt=defaultdict(lambda:defaultdict(int))
从收款进口柜台
cDepthCnt={key:Counter()用于SamplesList}
内存大小为:
DepthCnt[sample][depth]: 993487
yDepthCnt[depth][sample]: 1953307
cDepthCnt[sample][depth]: 994207
切换到计数器()
使用
使用
听起来好像你在试图统计
SamplesList
中出现的samples
。如果是这样的话,你正在寻找一个
给定:
SamplesList = ('Sa','Sb','Sc')
from collections import Counter
DepthCnt = Counter(SamplesList)
print(DepthCnt)
#Counter({'Sc': 1, 'Sa': 1, 'Sb': 1})
计数器:
SamplesList = ('Sa','Sb','Sc')
from collections import Counter
DepthCnt = Counter(SamplesList)
print(DepthCnt)
#Counter({'Sc': 1, 'Sa': 1, 'Sb': 1})
编辑:
SamplesList = ('Sa','Sb','Sc')
from collections import Counter
DepthCnt = Counter(SamplesList)
print(DepthCnt)
#Counter({'Sc': 1, 'Sa': 1, 'Sb': 1})
您也可以始终使用计数器而不是defaultdict
DepthCnt = {key:Counter() for key in SamplesList}
print(DepthCnt)
#DepthCnt = {'Sa': Counter(), 'Sb': Counter(), 'Sc': Counter()}
p.S
如果您正在处理一个大型数据集,那么也可以查看一下Counter类,Counter和defaultdict都是类似的,下面是关于TLDR的一个问题
- 计数器支持在多集上可以执行的大多数操作。所以 如果您想使用这些操作,请转到计数器
- 当您查询缺少密钥时,计数器不会向dict添加新密钥 钥匙。因此,如果您的查询包含可能不在 然后最好使用计数器
- 计数器还有一个名为most_common的方法,允许您按项目计数对项目进行排序。要在defaultdict中获得相同的内容,必须使用sorted
听起来好像你在试图统计
SamplesList
中出现的samples
。如果是这样的话,你正在寻找一个
给定:
SamplesList = ('Sa','Sb','Sc')
from collections import Counter
DepthCnt = Counter(SamplesList)
print(DepthCnt)
#Counter({'Sc': 1, 'Sa': 1, 'Sb': 1})
计数器:
SamplesList = ('Sa','Sb','Sc')
from collections import Counter
DepthCnt = Counter(SamplesList)
print(DepthCnt)
#Counter({'Sc': 1, 'Sa': 1, 'Sb': 1})
编辑:
SamplesList = ('Sa','Sb','Sc')
from collections import Counter
DepthCnt = Counter(SamplesList)
print(DepthCnt)
#Counter({'Sc': 1, 'Sa': 1, 'Sb': 1})
您也可以始终使用计数器而不是defaultdict
DepthCnt = {key:Counter() for key in SamplesList}
print(DepthCnt)
#DepthCnt = {'Sa': Counter(), 'Sb': Counter(), 'Sc': Counter()}
p.S
如果您正在处理一个大型数据集,那么也可以查看一下Counter类,Counter和defaultdict都是类似的,下面是关于TLDR的一个问题
- 计数器支持在多集上可以执行的大多数操作。所以 如果您想使用这些操作,请转到计数器
- 当您查询缺少密钥时,计数器不会向dict添加新密钥 钥匙。因此,如果您的查询包含可能不在 然后最好使用计数器
- 计数器还有一个名为most_common的方法,允许您按项目计数对项目进行排序。要在defaultdict中获得相同的内容,必须使用sorted
你的问题不清楚你希望完成什么。你想要的结果是什么?如果你正在计算,考虑使用<代码>集合。计数器< /代码>。你的问题不清楚你想要完成什么。你想要的结果是什么?如果你正在计算的东西,考虑使用<代码>集合。计数器< /代码>。我需要<代码> DeStcNt[[ SA ] ]和<代码> DeStcNt[ [ SB ] ] /代码>指向不同的DIST。关于“代码>计数器< /代码>,它是否将所有项存储在内存中,或者仅仅存储直方图?我有一个巨大的文件要计数。计数器将为内存中的每个重复项保存一个值,并且每个项的发生次数DepthCnt['Sa'][int(1)]+=1回溯(最近一次调用):文件“”,第1行,在TypeError中:“type”对象不可下标。我如何向计数器添加/追加?我需要
DepthCnt['Sa']
和DepthCnt['Sb']
指向不同的指令。关于计数器
,它会将所有项目存储在内存中,还是只存储直方图?我有一个巨大的文件要计数。计数器将为内存中的每个重复项保留一个值,并且每个itemDepthCnt['Sa'][int(1)]+=1回溯(最近一次调用上次):文件“”,第1行,在TypeError中:“type”对象不可下标。如何向计数器添加/追加?