Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > Сравнение 2х списков по номерам


Автор: КунгФуЧайник 31.3.2013, 20:35
Каждый список состоит из какого-то коичества записей вида "номер|наименование|цена". Номер и наименование берутся из одного справочника. Нужно сравнить списки и найти различия - каких номеров в каком списке нет. 
Пример:
Код

dc1 = {1: 'шорты, 150', 2: 'гавайка, 300', 4: 'шлепанцы, 100', 5: 'крем, 100'}
dc2 = {1: 'шорты, 150', 2: 'гавайка, 300', 5: 'крем, 100'}

difference = set(dc1).different(dc2)

Выдает "4". Но как узнать, в каком списке этой 4ки не хватает - списки могут быть на сотни\тысячи записей.

Кажется разобрался - зависит от позиции:
Код

difference = set(dc2).different(dc1)

возвращает пустое множество - "set()".

Автор: Backward 2.4.2013, 01:55
У Вас не список, а словарь.
set(dc1) - set(dc2) - вернет все ключи из словаря dc1, отсутствующие в dc2

Автор: КунгФуЧайник 3.4.2013, 08:50
Ага. Если бы каждый список состоял из одной колонки, тогда использовал бы list. А так - список, который dict:) На всякий случай уточнить: хочу попробовать пайтоном прочитать эксель-табличку. Записи таблички читать в dict? С языком и его типами только начинаю знакомиться.

Автор: Crafty 5.4.2013, 12:08
Цитата(КунгФуЧайник @  3.4.2013,  08:50 Найти цитируемый пост)
Если бы каждый список состоял из одной колонки

Можно сделать список списков, как вариант
Код

dc1 = [[1,'шорты, 150'], [2, 'гавайка, 300'], [4,'шлепанцы, 100'] [5,'крем, 100']]
dc2 = [[1,'шорты, 150'], [2,'гавайка, 300',[5, 'крем, 100']]

хотя зависит от задачи, что удобнее список или словарь

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)