Проверьте частичное совпадение словарных ключей Python 2.7 - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть два словаря:

D1 = {'1A11':'cat'}
D2 = {'1A2':'collar', 'B2':'dog'}

И я хотел бы зациклить словарь D1 и вернуть ключ, значение в словаре D2, соответствующее первой части ключей D1.

Например, ('1A2A':'collar'), поскольку 1A11 и 1A2 первые части совпадают независимо от цифр в конце.

Большое спасибо,

1 Ответ

0 голосов
/ 19 сентября 2018

Вы можете сделать следующее:

D1 = {'1A11':'cat'}
D2 = {'1A2':'collar', 'B2':'dog'}

def find_partial_matches(first, second, min_count):
    # You need to store the results in a list at least
    matches = []

    # Go through all keys of first dictionary
    for first_key in first:
        # Go through all pairs of second dictionary
        for second_key, second_value in second.items():
            # Check whether the min_count first characters are equal
            if first_key[0:min_count] == second_key[0:min_count]:
                matches.append((second_key, second_value))

    return matches

# In any cases, you will have to provide a minimum number of
# characters to match
print find_partial_matches(D1, D2, 2)

Это выводит:

[('1A2', 'collar')]

Быстрое объяснение

У меня в основном грубая силаподход.Я перебираю все ключи первого словаря.Для каждого ключа я перебираю каждую пару (key, value) второго словаря.Я проверяю, совпадают ли первые символы min_count обеих клавиш (это делается с помощью [0:min_count], что означает начало с индекса 0 и для символов min_count), если это так, это совпадение, которое я добавляю в списокиз матчей.Наконец верните список.

Вы могли бы сделать лучше.Например, приведенная выше реализация не обрабатывает дубликаты (но я уверен, что вы можете справиться с этим ?).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...