Geo*_*aou 6 python python-2.7 python-3.x
我有一个像这样的元组列表:
list = [(1,'q'),(2,'w'),(3,'e'),(4,'r')]
我试图创建一个更新功能更新(项目,数字),搜索列表中的项目,然后更改数字.
例如,如果我使用更新(w,6),结果将是
list = [(1, 'q'), (6, 'w'), (3, 'e'), (4, 'r')]
Run Code Online (Sandbox Code Playgroud)
我试过这段代码,但我有错误
if item in heap:
heap.remove(item)
Pushheap(item,num)
else:
Pushheap(item,num)
Run Code Online (Sandbox Code Playgroud)
Pushheap是一个将堆中的元组推到任何想法的函数吗?
您可以直接扫描列表中查找带有所需字母的元组并替换整个元组(您无法修改元组),在找到所需项目后突破循环.例如,
lst = [(1, 'q'), (2, 'w'), (3, 'e'), (4, 'r')]
def update(item, num):
for i, t in enumerate(lst):
if t[1] == item:
lst[i] = num, item
break
update('w', 6)
print(lst)
Run Code Online (Sandbox Code Playgroud)
产量
[(1, 'q'), (6, 'w'), (3, 'e'), (4, 'r')]
Run Code Online (Sandbox Code Playgroud)
但是,您应该认真考虑使用字典而不是元组列表.搜索字典比在列表上进行线性扫描要有效得多.