我正在尝试为字典列表创建一个条件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
初始化移到for循环中即可您也可以使用列表
不使用
+=
?当您写入new_tuple += ...
时,它将连接现有的new_tuple
和右边的任何内容,并将其设置为新的new_tuple
。所以你从()开始,然后你添加Alfred,得到('Alfred',)
,将其附加到列表中,然后添加Brenda和('Alfred', 'Brenda')
,并将那个添加到列表中,等等您可以完全删除
new_tuple
,并将每个元组文本直接附加到输出列表中相关问题 更多 >
编程相关推荐