在 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
是否具有与 A
、B
和 C
.
相同的元素(以任何顺序排列)
一种方法是使用 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 优化这个问题,但最好的方法是重新考虑这个问题。 A
、B
和 C
之间的区别在于每个值有多少个 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'))
确定搜索哪个索引组的最简单方法是什么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
是否具有与 A
、B
和 C
.
一种方法是使用 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 优化这个问题,但最好的方法是重新考虑这个问题。 A
、B
和 C
之间的区别在于每个值有多少个 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'))