在python中找到匹配索引组

时间:2018-03-14 02:36:43

标签: python matching chaining forward

确定在python

中搜索哪个索引组的最简单方法

示例:

欲望价值

Yes, Yes, No

提供的价值

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

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

1 个答案:

答案 0 :(得分:0)

我会在这里疯狂地跳跃,猜猜你正在尝试做什么。如果我猜错了,这个答案将毫无用处,我将删除它。

您的示例是,如果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')

现在,有一些方法可以简化和/或优化,但最好的方法是重新考虑问题。 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'))