如何删除地址簿条目

时间:2015-12-23 04:47:05

标签: python python-3.x

我有以下地址列表:

  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']]

有人可以帮忙吗?

2 个答案:

答案 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行中实现什么,但当listbook相同时,你的代码几乎可以完成你想要它做的事。

假设某些值(数字或电子邮件地址)可能不是不同的值,最好的方法是重建地址列表。

这可以通过以下代码完成:

book = []
for key, value in list:
    book.append(key)
    book.extend(list(value))

但请注意,此代码保证书中地址的顺序与之前相同(当然,保留单个条目的值的顺序)

我只是重新阅读您的问题并看到您希望列出一个列表,当然您可以使用它:

book = [[key, value[0], value[1]] for key, value in list]