有效计算列表中的元素

Moh*_*hit 1 python algorithm

我有一个清单:

color_list = [    ['black', 'maroon', 'maroon', 'maroon', 'maroon']
['purple', 'black', 'maroon', 'maroon', 'maroon']
['maroon', 'purple', 'maroon', 'teal', 'teal']
['maroon', 'maroon', 'purple', 'maroon', 'maroon']
['teal', 'olive', 'teal', 'maroon', 'maroon']
    ....
 ]
Run Code Online (Sandbox Code Playgroud)

现在,我想要计算以下内容:

栗色和黑色一起出现多少次

紫色和黑色一起出现多少次

栗色和紫色一起出现多少次.

等等.colour_list中的颜色来自预定义的颜色.即假设我有一个颜色列表['red','green','teal'....]我想基本上找到红色和绿色的计数一起在color_list中"n"次出现. .红色和青色一起出现"m"次..等等..

然后..下一步是找到红色,绿色和蓝色的次数..(一次取3个)...

在python中实现这个的最佳方法是什么?

geo*_*org 6

你可以使用collections.Counter:

color_list = [                                        
['black', 'maroon', 'maroon', 'maroon', 'maroon']  ,   
['purple', 'black', 'maroon', 'maroon', 'maroon']  ,   
['maroon', 'purple', 'maroon', 'teal', 'teal']     ,   
['maroon', 'maroon', 'purple', 'maroon', 'maroon'] ,   
['teal', 'olive', 'teal', 'maroon', 'maroon']         
]                                                     

from collections import Counter

cnt = [Counter(x) for x in color_list]

for x, y in [('black', 'maroon'), ('teal', 'olive')]:
    print x, y, sum(min(c[x], c[y]) for c in cnt)
Run Code Online (Sandbox Code Playgroud)