python - Python:计算列表/数据框列表中列表/数据框的唯一实例
问题描述
我有一个 for 循环创建 - 比如说 - 1000 个列表。这些列表的生成是稍微随机的,所以生成的列表是有区别的,但是也会有一些重叠的。我想计算一个唯一列表出现的次数,即给定列表与另一个生成列表重叠的次数。
列表中的每个项目的格式如下:
TeamRecord(name='GER', group='F', p=9, gs=6, ga=2, defeated=['SWE', 'MEX', 'KOR']),
如果有帮助,这里是上下文:正如列表项可能表明的那样,我正在模拟足球世界杯小组赛阶段,每个模拟结果都会生成一个列表,其中包含每支球队在给定模拟中的表现。所以我想看看,例如 10000 次模拟,哪些结果最有可能考虑到它们在模拟中出现的次数。
我认为这更像是一个抽象的问题,我真的没有任何代码可以提供有用的。我确实尝试过将列表转换为 DataFrames 并考虑使用 .equals 方法,但我不确定如何有效地做到这一点。
再次,问题是:
您将如何计算由 for 循环生成的列表的每个唯一实例的出现次数 - 也就是说,列表中的所有项目都应该与另一个生成的列表相同。这甚至可能做到吗,还是只是一种愚蠢的看待它的方式?
编辑 说明目的的简单示例:
list_of_lists = [['Test1', 'Test2', 'Test3'],
['Test1', 'Test2', 'Test3'],
['Test4', 'Test5', 'Test6']]
您将如何计算前两个列表有两个实例,第三个列表有 1 个,依此类推。
解决方案
任何解决方案都将特定于您计算的对象类型。我只处理您突出显示的特定示例,即字符串列表的列表。
您可以collections.Counter
在子列表的元组版本上使用。这是有效的,因为元组是可散列的,而列表不是。
from collections import Counter
L = [['Test1', 'Test2', 'Test3'],
['Test1', 'Test2', 'Test3'],
['Test4', 'Test5', 'Test6']]
res = Counter(map(tuple, L))
print(res)
Counter({('Test1', 'Test2', 'Test3'): 2,
('Test4', 'Test5', 'Test6'): 1})
推荐阅读
- r - 随机选择的学生达到前 5% 的最低分数是多少?
- javascript - 使用 React Native 构建的 Android 应用程序中未呈现图像
- python - Pygame 移动圆圈
- django - 计算查询集中的项目
- python - 如何在seaborn的countplot上添加百分比
- pyspark - Windows Spark 错误 java.lang.NoClassDefFoundError:无法初始化类 org.apache.spark.storage.StorageUtils
- python - checkWinner 未定义
- javascript - What is the difference between a js file and a js module?
- kotlin - RecyclerView 和 notifyDataSetChanged LongClick 不匹配
- powershell - PowerShell not removing new line characters