python - 计算值字典列表python的出现次数
问题描述
我想知道我的 dict 中值的出现次数:
test = {
"Staph": ["grp1","grp2","grp3"],
"Lacto": ["grp2","grp3","grp4","gr5"],
"Bacilus": ["grp2","grp4","grp6"]
}
我想为我的密钥获取公共组,例如:
grp1 仅存在于葡萄球菌中,因此 grp1 = 1,而 grp2 存在于“葡萄球菌”、“乳杆菌”和“芽孢杆菌”中,因此 grp2 = 3
grp1 = 1 , grp2 = 3 , grp3 = 2, grp4 = 2 , grp5 = 1, grp6 = 1
之后,我想计算我的先例数字的出现次数,例如:
我有 grp1 = 1 和 grp5 = 1 和 grp6 = 1 所以只有一个键中有 1 组的次数是 3 或者如果我取 grp3 = 2 , grp4 = 2 有 2 个相同组的次数对于不同的键是 2
所以我想要这样的结果:
number : the number of times n groups appear in different keys
Staph grp1 grp2 grp3
Lacto grp2 grp3 grp4 grp5
Bacillus grp2 grp4 grp6
1 3 2 2 1 1
number_of_1 = 3
number_of_2 = 2
number_of_3 = 1
我希望你能理解,谢谢你的回答
解决方案
你去吧:)
test = {
"Staph": ["grp1","grp2","grp3"],
"Lacto": ["grp2","grp3","grp4","gr5"],
"Bacilus": ["grp2","grp4","grp6"]
}
groups = set()
for i,j in test.items():
for k in j:
groups.add(k)
counts = []
new_test = {}
for k in groups:
for i in test.keys():
if k in test[i]:
if k not in new_test:
new_test[k] = 1
else:
new_test[k] += 1
print(new_test)
values = [i for i in new_test.values()]
values_set = set(values)
count_values = []
for i in values_set:
count = 0
for j in values:
if i == j:
count += 1
count_values.append([i,count])
print(count_values)
推荐阅读
- reactjs - React Material Ui 和 React 路由器
- python - 绘制 For Iteration 的结果
- linux - 删除除第一次出现的 Pattern 之外的所有匹配行
- python - 为什么这个 curl 命令有效,但我通过 python 的 post 请求无效?
- python - Python:string.rfind() 不使用反斜杠 ('\')
- javascript - 根据条件禁用按钮
- javascript - 使用 Mocha 和 JavaScript 语法测试 Angular 9 (TypeScript)
- python - Python BeautifulSoup 表不解析
- google-cloud-platform - Google Cloud Source Repository:远程:PERMISSION_DENIED:调用者没有远程权限
- c++ - 在复杂的类中使用 boost::numeric::odeint 步进器