根据元组第二部分从元组列表中删除项
contacts.remove((name,ip))
我有一个唯一的ip地址。我想根据这个ip地址从联系人列表中删除一个元组,不需要考虑名字。
我刚刚尝试了 contacts.remove((pass,ip))
,但是遇到了一个错误。
3 个回答
1
这回答了我还没提的问题。谢谢你的解释,不过让我来总结一下,并把答案概括一下,适用于多个删除和Python 3。
list = [('ADC', 3),
('UART', 1),
('RemoveMePlease', 42),
('PWM', 2),
('MeTooPlease', 6)]
list1 = [(d, q)
for d, q in list
if d not in {'RemoveMePlease', 'MeTooPlease'}]
print(list1)
for i, (d, q) in enumerate(list):
if d in {'RemoveMePlease', 'MeTooPlease'}:
del(list[i])
print(list)
4
因为要删除的 ip
是唯一的,所以在遍历一个容器时,你不需要像平常那样采取所有的预防措施。因此,最简单的方法就是:
for i, (name, anip) in enumerate(contacts):
if anip == ip:
del contacts[i]
break
11
contacts = [(name, ip) for name, ip in contacts if ip != removable_ip]
或者
for x in xrange(len(contacts) - 1, -1, -1):
if contacts[x][1] == removable_ip:
del contacts[x]
break # removable_ip is allegedly unique
第一种方法是把contacts
重新指向一个新创建的列表,这个列表里不包含我们想要排除的那一项。第二种方法则是直接更新原来的列表;它是从后往前处理,这样可以避免因为del
语句的操作而导致的错误。