我有以下地址列表:
lst= ['Andrea', '21', 'andrea@hotmail.com', 'Brenda', '1211', 'brenda@yahoo.co.uk']
我使用包含我的删除命令(不工作)的以下代码变成了一个字典:
name=str(input("Name:"))
lst = sum(lst, [])
names= lst[::3]
numbers= lst[1::3]
emails = lst[2::3]
dct = {name: (number,email) for name, number, email in zip(names, numbers, emails)}
if name in dct:
del dct[name]
print("Deleted!")
else:
print("Doesn´t exist!")
我想要它做的是删除你插入的名称的联系信息并将其再次转回列表,这样我就可以更新真实列表“书籍”,如果你想删除Brenda并转过来字典回到列表列表:
lst = [['Andrea', '21', 'andrea@hotmail.com']]
有人可以帮忙吗?
答案 0 :(得分:0)
book = ['Andrea', '21', 'andrea@hotmail.com', 'Brenda', '1211', 'brenda@yahoo.co.uk']
input_name = str(raw_input("Name:"))
updatedBook = [[name, number, email] for name, number, email in zip(book[::3], book[1::3], book[2::3]) if name != input_name]
print updatedBook
答案 1 :(得分:-1)
我不太确定你想要在第2行中实现什么,但当list
与book
相同时,你的代码几乎可以完成你想要它做的事。
假设某些值(数字或电子邮件地址)可能不是不同的值,最好的方法是重建地址列表。
这可以通过以下代码完成:
book = []
for key, value in list:
book.append(key)
book.extend(list(value))
但请注意,此代码不保证书中地址的顺序与之前相同(当然,保留单个条目的值的顺序)
我只是重新阅读您的问题并看到您希望列出一个列表,当然您可以使用它:
book = [[key, value[0], value[1]] for key, value in list]