Сложение значений кортежей вместе

class WaitingList:
       
    def __init__(self):
           
        self.items = []   
     
    
    def stillWaiting(self, destination):
        newList = []
        index  = 0
        for i in range(0, len(self.items)):
            thisGroup = self.items[index]
            if thisGroup[1] == thisGroup[1]:
                duplicates = thisGroup[0] + thisGroup[0]
                newList = duplicates
            else:
                newList = i
    return newList

self.items хранит список кортежей, например

self.items = [(3,"Rome"),(2,"Naples"),(1,"Pisa"), (1,"Florence"), (25,"Rome")]

Я требую, чтобы моя программа выполняла итерацию по каждому кортежу в любом заданном списке, и если пункт назначения, т.е. Рим, является общим в любом из кортежей, добавьте числа, которые появляются рядом с пунктами назначения в кортежах, и сохраните результаты в новый список. Таким образом, ожидаемый результат для приведенного выше будет:

[28,"Rome"), (2,"Naples"),(1,"Pisa"), (1,"Florence")]

Спасибо

stillWating получить аргумент с именем destination. Что он делает с этим?
balderman 09.12.2020 19:02

Вы уже пытались написать подпрограмму, которая будет делать то, что вам нужно? Как это выглядит?

Ben 09.12.2020 19:03

if thisGroup[1] == thisGroup[1] может быть False?

balderman 09.12.2020 19:06

Это позволит пользователю узнать количество людей в списке ожидания на рейс до введенного пункта назначения.

Stephen19058 09.12.2020 19:07

balderman, да, я думал, что с помощью оператора for он перейдет к следующему кортежу списка и сравнит два значения в индексе 1, которые будут пунктом назначения.

Stephen19058 09.12.2020 19:10
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
5
98
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий
from collections import defaultdict

city_to_num = defaultdict(int)
for num, city in self.items:
    city_to_num[city] += num

output = [(num, city) for city, num in city_to_num.items()]

Это не касается self.items, из которых исходят номер и пункт назначения.

Stephen19058 09.12.2020 19:28

Добавлял обобщающее решение. Просто повторите self.items вместо items, как я писал ранее.

Laggs 09.12.2020 19:29

Это добавило значения, но; [(30, 'Рим'), (2, 'Неаполь'), (1, 'Пиза'), (1, 'Флоренция')] ожидание вылета в Рим было возвращено 5 раз при проверке на тестовом файле, я нуждаться; 30 ожидающих вылета в Рим, на одной линии 2 ожидающих вылета в Неаполь, на следующей линии и т. д., но в тестовом файле применяется «ожидание вылета в»

Stephen19058 09.12.2020 19:56

Это выходит за рамки исходного вопроса.

Laggs 09.12.2020 19:57

Да, я знаю, я неправильно истолковал это, спасибо за вашу помощь в любом случае.

Stephen19058 09.12.2020 19:59

Похоже, вы занимаетесь чем-то вроде частоты. Так что не воспринимайте это как ответ, но почему бы не изменить работу self.items. Создание кортежа с именем и значением кажется немного наивным, почему бы не создать словарь и не использовать что-то вроде setdefault или get, чтобы у вас не было дубликатов в dict в первую очередь, и если вам нужно, вы можете даже преобразовать dict в список кортежей, используя items()

Другие вопросы по теме