问题描述
List 1
['DEF','ABC','MNM']
List 2:
['DEF','MNM']
List 3:
['ABC','MNM']
List 4:
['DEF','MNM']
List 5:
['ABC','MNM']
List 6:
{'DEF': [1.34],'ABC': [0.44],'MNM': [0.77]}
我的目标是在这 6 个列表(如上所示的字典或数组)中找到匹配条目的子集。
-
如果我将一个变量设置为至少匹配 6 次,我应该得到类似 final = {'MNM'} 的输出,因为 'MNM' 出现在上述所有内容中。
-
如果我设置一个变量至少匹配 4 次,那么我应该得到 final = {'ABC','MNM'}
-
如果我设置一个变量至少匹配 3 次,那么我应该得到 final = {'DEF','MNM'}
我不知道执行此操作的最有效方法是什么。感谢您的帮助!
解决方法
这是一个非常粗糙的代码,您可以对其进行更改:
List1 = ['DEF','ABC','MNM']
List2 = ['DEF','MNM']
List3 = ['ABC','MNM']
List4 = ['DEF','MNM']
List5 = ['ABC','MNM']
List6 = {'DEF': [1.34],'ABC': [0.44],'MNM': [0.77]}
mapper = {1: List1,2: List2,3: List3,4: List4,5: List5,6: List6}
def generate_elem_count():
result_data = []
for val in mapper.values():
if type(val) == list:
result_data += val
elif type(val) == dict:
for key in val:
result_data.append(key)
count_elem = {elem: result_data.count(elem) for elem in result_data}
return count_elem
def get_from_min_match(var):
temp = []
count_elem = generate_elem_count()
for item in count_elem:
if var <= count_elem[item]:
temp.append(item)
return set(temp)
print(get_from_min_match(3))
print(get_from_min_match(4))
print(get_from_min_match(6))
# OUTPUT
# {'MNM','DEF','ABC'}
# {'MNM','ABC'}
# {'MNM'}
你的第二点也是错误的:“如果我将一个变量设置为至少匹配 4 次,那么我应该得到 final = {'ABC','MNM'}”。
它应该是 {'DEF','MNM'}