gpt4 book ai didi

python - 从元组组合中获取最高计数

转载 作者:行者123 更新时间:2023-12-01 03:00:39 26 4
gpt4 key购买 nike

我有一个元组列表。每个元组都是一个键值对,其中键是数字,值是字符串。对于每个键,我需要以列表形式返回前两个字符及其计数。

例如,给定列表

[(1, "aabbc"), (1, "babdea"), (2, "aabacc"), (2, "acdad")]

键是 1 和 2,值是

"aabbc", "babdea", ..., "acdaad"

元组可以转换为以下形式的元组

(1, {"a":2, "b":2, "c":1}),(1,{"a":2, "b":2, "d":1,"e":1})...(2,{"a":2, "c":1, "d":2})

对于键 1,组合元组将为

(1,{"a":4, "b":4, "c":1, "d":1,"e":1})

所以前两个字符及其计数将是

[("a",4),("b",4)]

每个键都会重复该过程

我能够得到我想要的输出,但我正在寻找更好的解决方案

from collections import Counter
l=[(x[0],list(x[1])) for x in [(1, "aabbc"), (1, "babdea"), (2, "aabacc"), (2, "acdad")]]
l2=[(y[0],Counter(y[1])) for y in l]

l3=[(x[0][1],x[1][1]) for x in it.combinations(l2,2) if x[0][0]==x[1][0] ]

l4=[]
for t,y in l3:
d={}
l5=list(set(t.keys()).union(y.keys()))
for i in l5:
d[i]=t[i]+y[i]
d_sort=sorted(d.items(), key=lambda x: x[1], reverse=True)[:2]

l4.append(d_sort)


print l4
[[('a', 4), ('b', 4)], [('a', 5), ('c', 3)]]

最佳答案

您还可以使用相同的键连接字符串,然后计算字符数并提取两个最常见的字符:

import collections

data = [(1, "aabbc"), (1, "babdea"), (2, "aabacc"), (2, "acdad")]

groups = collections.defaultdict(str)
for i, s in data:
groups[i] += s

print([collections.Counter(string).most_common(2)
for string in groups.values()])

你会得到:

[[('a', 4), ('b', 4)], [('a', 5), ('c', 3)]]

关于python - 从元组组合中获取最高计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43876806/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com