我想根据元素在每个列表中出现的频率对多个列表进行排名。例子:
list1 = 1,2,3,4
list2 = 4,5,6,7
list3 = 4,1,8,9
result = 4,1,2,3,4,5,6,7,8 (4 计 3 次,1 计 2 次,其余计 1 次)
我已经尝试了以下方法,但我需要一些更智能的东西,并且我可以用任何数量的列表来做一些事情。
l = []
l.append([ 1, 2, 3, 4, 5])
l.append([ 1, 9, 3, 4, 5])
l.append([ 1, 10, 8, 4, 5])
l.append([ 1, 12, 13, 7, 5])
l.append([ 1, 14, 13, 13, 6])
x1 = set(l[0]) & set(l[1]) & set(l[2]) & set(l[3])
x2 = set(l[0]) & set(l[1]) & set(l[2]) & set(l[4])
x3 = set(l[0]) & set(l[1]) & set(l[3]) & set(l[4])
x4 = set(l[0]) & set(l[2]) & set(l[3]) & set(l[4])
x5 = set(l[1]) & set(l[2]) & set(l[3]) & set(l[4])
set1 = set(x1) | set(x2) | set(x3) | set(x4) | set(x5)
a1 = list(set(l[0]) & set(l[1]) & set(l[2]) & set(l[3]) & set(l[4]))
a2 = getDifference(list(set1),a1)
print a1
print a2
现在问题来了……我可以用 a3、a4 和 a5 一次又一次地做到这一点,但它太复杂了,我需要一个函数来解决这个问题……但我不知道如何……我的数学卡住了;)
已解决:非常感谢您的讨论。作为一个新手,我以某种方式喜欢这个系统:快速+信息丰富。你帮了我所有的忙!泰