Вы можете сделать следующее:
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
), если это так, это совпадение, которое я добавляю в списокиз матчей.Наконец верните список.
Вы могли бы сделать лучше.Например, приведенная выше реализация не обрабатывает дубликаты (но я уверен, что вы можете справиться с этим ?).