首页 > 解决方案 > 计算值字典列表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 

我希望你能理解,谢谢你的回答

标签: pythonpandaslistdataframedictionary

解决方案


你去吧:)

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)

推荐阅读