在 python 中找到匹配索引组

find match index group in python

确定搜索哪个索引组的最简单方法是什么python

示例:

期望值

Yes, Yes, No

提供的值

A = No, No, No
B = Yes, No, No
C = Yes, Yes, No

我们想知道哪个索引组与 A、B 或 C 匹配?

我将在这里的黑暗中疯狂一跃,猜猜你想做什么。如果我猜错了,这个答案就没有用了,我会删除它。

你的例子是,如果input[Yes, No, Yes],它应该匹配C,也就是Yes, Yes, No。因此,您可能想知道 input 是否具有与 ABC.

相同的元素(以任何顺序排列)

一种方法是使用 collections.Counter 作为多重集:

from collections import Counter

A = Counter(('No', 'No', 'No'))
B = Counter(('Yes', 'No', 'No'))
C = Counter(('Yes', 'Yes', 'No'))

input = ['Yes', 'No', 'Yes']
input_multiset = Counter(input)

if input == A:
    print('A')
elif input == B:
    print('B')
elif input == C:
    print('C')
else:
    print('no match')

现在,有一些方法可以简化 and/or 优化这个问题,但最好的方法是重新考虑这个问题。 ABC 之间的区别在于每个值有多少个 Yes。所以:

from collections import Counter

abc = {0: 'A', 1: 'B', 2: 'C']

input = ['Yes', 'No', 'Yes']
input_counts = Counter(input)
yes_count = input_counts['Yes']
print(abc.get(yes_count, 'no match'))