Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何删除通讯簿条目_Python_Python 3.x - Fatal编程技术网

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]