【发布时间】:2020-05-10 21:37:51
【问题描述】:
我正在尝试为字典列表创建条件 for 循环。
词典列表如下:
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)
我得到的是以下输出:
[('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')]
如何避免元组中的重复?
谢谢
【问题讨论】:
-
在循环内移动
new_tuple。此外,只有在没有中间名时才添加。
标签: python list loops dictionary tuples