python - 组合组合时的Python记录频率
问题描述
我已经开始将 python 用于一个宠物项目,因为在 excel 之类的程序中无法组织这些数据。我希望你能给我一些指导,告诉我如何达到我想要的结果。请原谅我缺乏python素养。
我有以下代码,我通过减少列表的数量和这些列表中的元素数量来简化这些代码,以便于说明。
import itertools
from collections import Counter
a = list(itertools.permutations([32,36,41],3))
b = list(itertools.permutations([36,32,41],3))
c = list(itertools.permutations([19,31,7],3))
fulllist = a+b+c
print(Counter(map(tuple, fulllist)))
这给出了以下结果:
Counter({(32, 36, 41): 2, (32, 41, 36): 2, (36, 32, 41): 2, (36, 41, 32): 2, (41, 32, 36): 2, (41, 36, 32): 2, (19, 31, 7): 1, (19, 7, 31): 1, (31, 19, 7): 1, (31, 7, 19): 1, (7, 19, 31): 1, (7, 31, 19): 1})
这已经很好了,但不是我需要的。现在我有了 intertools 生成的每个列表组合的第一个计数,我不再关心所述列表中每个元素的顺序。所以,我想得到的最终结果是:
(32, 36, 41): 12
(19, 31, 7): 6
并排序,就像我上面写的一样。我觉得我可能会绕圈子,也许有一种更简单的方法可以得到我正在寻找的结果。实际上,我的列表中有 15 个元素,其中大约有 50 个要处理。
我希望你能帮我解决这个问题。非常感谢您提前。
解决方案
如果您不计算排列(在这种情况下使用@Martin 的答案),并且这只是用于创建示例列表,只需排序以使其清楚顺序无关紧要:
>>>print(Counter(tuple(sorted(x)) for x in fulllist))
Counter({(32, 36, 41): 12, (7, 19, 31): 6})
推荐阅读
- python - Tensorboard 页面错误:MimeType 文本/纯文本不可执行
- jquery - 将数组值转换为 RGB 格式
- typescript - Mongoose 错误:架构尚未注册
- javascript - 停止连接四的获胜函数再次返回 true 的最佳算法是什么?
- typescript - 键入对象属性装饰器
- ros - 如何将 SVG 图像添加到 Gazebo?
- java - java中用户输入的问题
- php - 查看哪个表影响了另一个表 SQL-Server
- python-3.x - numpy ifft 输出的功率比原始信号大得多
- java - 如何在 Android 中检查手机身份验证用户?