Здравствуйте, 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"),
])
)
|
| | |