Я пытаюсь создать условное выражение для l oop для списка словарей.
Список словарей выглядит следующим образом:
CLIENTS_EXAMPLE = [
{
"first-name": "Elsa",
"last-name": "Frost",
"title": "Princess",
"address": "33 Castle Street, London",
"loyalty-program": "Gold",
},
{
"first-name": "Anna",
"last-name": "Frost",
"title": "Princess",
"address": "34 Castle Street, London",
"loyalty-program": "Platinum",
},
{
"first-name": "Ben",
"last-name": "Frost",
"middle-name": "john",
"title": "Prince",
"address": "36a Castle Street, London",
"loyalty-program": "Platinum",
},
{
"first-name": "Harry",
"middle-name": "Harold",
"last-name": "Hare",
"title": "Mr",
"email-address": "harry.harold@hare.name",
"loyalty-program": "Silver",
},
{
"first-name": "Leonnie",
"last-name": "Lion",
"title": "Mrs",
"loyalty-program": "Silver",
},
]
Я должен распечатать людей с известным адресом (не адрес электронной почты) и распечатать их первый, средний (если имеется) и фамилия с адресом.
Вывод должен выглядеть следующим образом:
[('Princess Elsa Frost', '33 Castle Street, London'),('Prince Ben John Frost', '36a Castle Street, London') ... etc]
Мне удалось отфильтровать элементы и добавить их в список кортежей:
def process_clients(segment):
new_list = []
new_tuple =()
for x in segment: #separates the dictionary from the list
if "address" in x:
if "middle-name" in x:
new_tuple += (x["title"] + " " + x["first-name"] + " " + x["middle-name"] + " " + x["last-name"]), (x["address"])
else:
new_tuple += (x["title"] + " " + x["first-name"] + " " + x["last-name"]), (x["address"])
new_list.append(new_tuple)
print(new_list)
process_clients(CLIENTS_EXAMPLE)
Что я get - это следующий вывод:
[('Princess Elsa Frost', '33 Castle Street, London'), ('Princess Elsa Frost', '33 Castle Street, London', 'Princess Anna Frost', '34 Castle Street, London'), ('Princess Elsa Frost', '33 Castle Street, London', 'Princess Anna Frost', '34 Castle Street, London', 'Prince Ben john Frost', '36a Castle Street, London')]
Как избежать повторений в кортежах?
Спасибо