我有一个清单:
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中实现这个的最佳方法是什么?
你可以使用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)