根据元组第二部分从元组列表中删除项

3 投票
3 回答
14110 浏览
提问于 2025-04-15 22:49

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语句的操作而导致的错误。

撰写回答