У меня есть два набора строк: a
и b
type(a)
set
type(b)
set
a
{'South 2nd Street'}
b
{'8921 South 2nd Street'}
Чтобы найти разницу между этими двумя наборами, я применяю функцию difference()
, которую я хотел бы вернуть 8921
, но вместо этого возвращает всю строку
b.difference(a)
{'8921 South 2nd Street'}
Я предполагаю, что это происходит потому, что эти наборы сравниваются по тому, какой символ находится в индексе 0, 1, 2, 3 и так далее (в этом случае a
полностью отличается от b
)
Каков же правильный способ получить комбинированную разницу (ы) между двумя строками в Python без использования разности наборов? В этом случае вывод должен быть 8921
Нет, это не известно заранее
Ваши наборы содержат весь адрес как единый элемент, а не отдельные элементы для каждого слова.
Вам нужно разбить строку на слова и сделать набор из них.
a = set('South 2nd Street'.split())
b = set('8921 South 2nd Street'.split())
print(b.difference(a))
{'8921'}
«который должен возвращать 8921, но вместо этого возвращает всю строку» нет, не должен. Почему вы считаете, что должно? Эти два заданных объекта содержат два разных объекта, поэтому очевидно, что разница будет заключаться в этом объекте. «Я предполагаю, что это происходит потому, что эти наборы сравниваются по тому, какой символ находится в индексе 0, 1, 2, 3 и так далее (в этом случае a полностью отличается от b)» Нет, это сравнивает два разных объекта в набор.