首页 > 解决方案 > 如何创建与多个字典或数组上出现的内容匹配的新字典项?(Python)

问题描述

List 1
['DEF', 'ABC', 'MNM']
List 2: 
['DEF', 'ABC', '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 个列表中找到匹配条目的子集(如上所示的字典或数组。)

我不知道执行此操作的最有效方法是什么。谢谢你的帮助!

标签: pythonarraysdictionarypattern-matching

解决方案


这是一个非常粗略的代码,您可以对其进行更改:

List1 = ['DEF', 'ABC', 'MNM']
List2 = ['DEF', 'ABC', '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', 'DEF', 'ABC'}
# {'MNM'}

您的第二点也是错误的:“如果我将一个变量设置为至少匹配 4 次,那么我应该得到 final = {'ABC', 'MNM'}”。
它应该是 {'DEF', 'ABC', 'MNM'}


推荐阅读