Сравнение списка со списком кортежей?

#python #python-2.x

#python #python-2.x

Вопрос:

У меня есть два списка. Один — это просто список идентификаторов

ids = [123, 124, 127, 316, 463]

а другой — это список кортежей идентификаторов и имен

combined = [(123, "Brian"), (124,"Eric"), (222,"Jane")]

Какой самый простой способ выполнить сравнение наборов для них? Мне нужно выяснить две вещи — идентификаторы, которые существуют в первом списке, которые не отображаются во втором списке, в частности, 127, 316, 463 и наоборот, что было бы (222, "Jane") .

Я использую Python 2.5.

Комментарии:

1. Почему все еще используется Python 2.5?!

2. Есть ли какая-либо причина, по которой вы используете действительно устаревшую версию python? что вы пробовали?

3. Моя работа, ха-ха. Как будто это был личный выбор. Прямо сейчас единственный способ, которым я могу это сделать, — это использовать циклы. Что я могу сделать. Я просто подумал, что есть более приятный способ.

4. Моя первая мысль заключается в том, что combined должно быть dict , и тогда вы могли бы использовать combined.keys (), и тогда у вас будет два списка.

5. Я отправлю вам ответ по факсу после концерта Spice Girls

Ответ №1:

Прежде всего, вам следует, по крайней мере, обновиться до Python 2.7, если что-то не мешает вам это сделать.

Вы можете сравнить ids с первым элементом каждого списка в combined , если хотите сравнить числа:

 ids = [123, 124, 127, 316, 463]
combined = [(123, "Brian"), (124,"Eric"), (222,"Jane")]
combined_first = [x[0] for x in combined]
  

Комментарии:

1. Я хотел бы обновить. К сожалению, я не могу. Но хорошо, я могу просто сделать это, составить два списка и перейти оттуда, я полагаю.

2. Строка combined_first дает хороший ответ. Вместо списков я бы генерировал наборы, и на следующую часть операции отвечает оператор set minus . geeksforgeeks.org /… (протестировано на 2.7.13)

3. Какой комментарий я должен удалить?

4. docs.python.org/2/library/sets.html#set-objects извините, я хотел связать официальные документы в первый раз.