gpt4 book ai didi

Python - 更新元组列表中的值

转载 作者:太空狗 更新时间:2023-10-29 17:56:59 24 4
gpt4 key购买 nike

更新元组列表中值的最佳方法是什么?

我目前在下面的代码中这样做,但我想有一种更简洁明了的方法。

>>> foo = [('a', 'hello'), ('b', 'world')]
>>> bar = dict(foo)
>>> bar['b'] = 'friend'
>>> foo = bar.items()
>>> foo
[('a', 'hello'), ('b', 'friend')]

编辑:使用元组列表的原因在我原来的帖子中并不清楚。目标是在错误处理期间更新 wsgi 应用程序的一些 header 值,即元组列表。

提前致谢。

最佳答案

您的数据结构(元组列表)最好称为关联列表。正如其他人指出的那样,使用字典可能会更好,因为您将获得更好的操作摊销成本(插入、删除和查找对于字典是 O(1),但删除和查找对于关联是 O(n)列表)。

关于通过将关联列表转换为字典然后再返回关联列表来更新关联列表,此方法具有三个缺点。它非常昂贵,它可能会改变项目的顺序,并且会删除重复项。

如果您想继续使用关联列表,最好只使用列表理解来更新数据结构。在时间和内存方面的成本将是 O(n),但这已经是您在使用中间字典时所拥有的。

这是一个简单的方法(需要 Python 2.5,因为它使用三元运算符):

def update_in_alist(alist, key, value):
return [(k,v) if (k != key) else (key, value) for (k, v) in alist]

def update_in_alist_inplace(alist, key, value):
alist[:] = update_in_alist(alist, key, value)

>>> update_in_alist([('a', 'hello'), ('b', 'world')], 'b', 'friend')
[('a', 'hello'), ('b', 'friend')]

关于Python - 更新元组列表中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8559217/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com