#python #python-3.x #list
#python #python-3.x #Список
Вопрос:
Это может быть довольно просто, но моя программа — это просто бронирование билетов в кино:
Мой список (например):
bookings=[["Sam", 1, "titanic", "morning", "Stit1"],
["Bill", 2, "titanic", "evening", "Btit2"],
["Kik", 2, "lionking", "afternoon", "Klio2"]]
Я хочу напечатать, сколько людей (например) будут смотреть «Титаник». Как мне это сделать?
Заранее спасибо
Ответ №1:
Попробуйте
sum(b[2] == 'titanic' for b in bookings)
Это создает генератор bookings
, а затем суммирует их с «титаником».
Обратите внимание на неявную обработку True
и False
как 1 и 0 соответственно.
Комментарии:
1. Я думаю, что ввиду того, что здесь происходит «под капотом», стоило бы еще немного рассказать о том, как это работает, с точки зрения того, как
True
иFalse
логические значения обрабатываются в целочисленной арифметике.
Ответ №2:
Вы также хотите только число или имена? В любом случае, вот так вы получаете список со всеми людьми, которые собираются смотреть «Титаник», и вы можете легко получить его длину
bookings=[["Sam", 1, "titanic", "morning", "Stit1"], ["Bill", 2, "titanic", "evening", "Btit2"], ["Kik", 2, "lionking", "afternoon", "Klio2"]]
count = [item for item in bookings if 'titanic' in item]
print(len(count))
Ответ №3:
Вы можете создать словарь с названиями фильмов в качестве ключей, а значением — общее количество. Что-то вроде этого
ticket_count = {}
for booking in bookings:
ticket_count[booking[2]] = ticket_count.get(booking[2], 0) 1
Я предполагаю, что название фильма всегда является третьим элементом в списке.
Ответ №4:
Вы можете сделать сумму 1
для каждого соответствующего бронирования.
Только третье поле имеет значение при принятии решения о том, какие заказы включать, поэтому вы должны использовать его (т. Е. booking[2]
Здесь ). Если вы просматриваете все элементы без разбора, то в большинстве случаев это может сработать, но вы можете столкнуться с проблемами, если название фильма также появится в другом поле, например, Morning (фильм).
Следующий метод не зависит от выполнения арифметики с использованием логических значений.
sum(1 for booking in bookings if booking[2] == "titanic")