#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 извините, я хотел связать официальные документы в первый раз.