Re[4]: Как "схлопнуть" список?
От: Буравчик Россия  
Дата: 03.05.24 15:06
Оценка: 6 (1)
Здравствуйте, sergii.p, Вы писали:

SP>что-то подобное

SP>
SP>Person ChooseMaxFull(IEnumerable<Person> list) => list.MaxBy(p => p, MoreFull);
SP>


По-момему код выбирает один элемент из списка, а надо было объединить несколько элементов в один

Проще написать "объединялку" значений (сорри за питон в .NET-разделе)

def combineValues(values: List[str]) -> str:
    validValues = (v for v in values if v != "")
    return next(validValues, "")

def combinePersons(persons: List[Person]) -> Person:
    return Person(
        SurName = combineValues(p.SurName for p in persons),
        FirstName = combineValues(p.FirstName for p in persons),
        Patronymic = combineValues(p.Patronymic for p in persons),
    )


  Полный работающий код
from typing import List
from dataclasses import dataclass

@dataclass
class Person:
    SurName: str
    FirstName: str
    Patronymic: str
    
def combineValues(values: List[str]) -> str:
    validValues = (v for v in values if v != "")
    return next(validValues, "")

def combinePersons(persons: List[Person]) -> Person:
    return Person(
        SurName = combineValues(p.SurName for p in persons),
        FirstName = combineValues(p.FirstName for p in persons),
        Patronymic = combineValues(p.Patronymic for p in persons),
    )

print(
    combinePersons([
        Person("", "", "pat"),
        Person("sur", "", "pat"),
        Person("", "fir", "pat"),
    ])
)
Best regards, Буравчик
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.