Python 如何删除通讯簿条目
我有以下地址列表:Python 如何删除通讯簿条目,python,python-3.x,Python,Python 3.x,我有以下地址列表: lst= ['Andrea', '21', 'andrea@hotmail.com', 'Brenda', '1211', 'brenda@yahoo.co.uk'] 我使用包含delete命令的以下代码将其转换为字典(不起作用): 我想让它做的是删除您插入的姓名的联系信息,并将其重新转换为列表,这样我就可以更新真实的“书籍”列表,例如,如果您想删除Brenda并将词典转换为列表: lst = [['Andrea', '21', 'andrea@hotmail.com
lst= ['Andrea', '21', 'andrea@hotmail.com', 'Brenda', '1211', 'brenda@yahoo.co.uk']
我使用包含delete命令的以下代码将其转换为字典(不起作用):
我想让它做的是删除您插入的姓名的联系信息,并将其重新转换为列表,这样我就可以更新真实的“书籍”列表,例如,如果您想删除Brenda并将词典转换为列表:
lst = [['Andrea', '21', 'andrea@hotmail.com']]
有人能帮忙吗?我不太确定您想在第2行中实现什么,但是当
列表
应该与书籍
相同时,您的代码几乎达到了您想要的效果
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
假设某些值(数字或电子邮件地址)可能不是不同的值,最好的方法是重建地址列表
这可以通过以下代码完成:
book = []
for key, value in list:
book.append(key)
book.extend(list(value))
但是,请记住,此代码不能保证book中地址的顺序与以前相同(当然,单个条目的值顺序是保留的)
我只是重读了你的问题,看到你希望有一个列表,那么你当然可以用这个:
book = [[key, value[0], value[1]] for key, value in list]
lst
是否与book
相同?使用lst=book
而不是lst=sum(lst,[])
,此代码有效。有什么问题吗?@TigerhawkT3是的,它可以工作,但Phyti也希望将其作为列表返回。@scope-这只是为了表明Brenda已被删除。它特别指出“包含[the]delete命令”的代码“不起作用”。举个例子,如果你想删除Brenda并将字典返回到列表列表中:-当它不作为列表开始时,如何将其“返回”到列表中?输入示例是否显示了错误的数据,因此字典无法正确构建,也无法删除?为什么值的可能唯一性需要构建一个全新的对象?我不是python专家,但既然我们讨论的是List对象,它们是python内置的基元,我想创建一个新列表要比从列表中删除列表元素便宜得多。在后一种情况下,插入元素之后的所有元素都必须移动,以便为新元素腾出位置。然而,人们可能必须运行测试来检查哪个更快。你真的必须构建一个全新的对象吗?也没有人解释你在做什么。@TigerhawkT3我们可以这样做:>>>列表(reduce(lambda x,y,z:x+y+z,book.items())?@Phyti-我不知道,但是你在使用Python 3,所以reduce
将是从functools
导入的,因为它有点不推荐使用。另外,不要使用reduce
,因为它有点不推荐使用。如果您被允许或希望使用dict,可以肯定地解决这个问题
book = [[key, value[0], value[1]] for key, value in list]