gpt4 book ai didi

python - 将 Python 对象列表减少为 object.id -> object 的 dict

转载 作者:IT老高 更新时间:2023-10-28 21:50:49 28 4
gpt4 key购买 nike

你有一个对象列表,每个对象都有一个 id 属性。

这是我将其转换为 dict 的方法,其中键是 id,值是对象:

reduce(
lambda x,y: dict(x.items() + { y.id : y}.items()),
list,
{}
)

建议更好的方法。

最佳答案

在 Python 3.x 中:

object_dict = {x.id: x for x in object_list}

在 Python 3.x 和 Python 2.4+ 中:

object_dict = dict((x.id, x) for x in object_list)

(x.id, x) for x in object_list 是一个生成器推导(而且,很好地,不需要像列表推导一样用括号括起来,如果它是被用作调用的单个参数;当然,这意味着在其他情况下,我使用的表达式必须是 ((x.id, x) for x in object_list))。与列表推导不同,它不会生成所有项目的实际列表,因此在这种情况下效率更高。

附带说明一下,Python 有一个内置方法 id():

Return the “identity” of an object. This is an integer which is guaranteed to be unique and constant for this object during its lifetime. Two objects with non-overlapping lifetimes may have the same id() value. (Implementation note: this is the address of the object.)

所以如果你想让 Python 自己处理 id,你可以这样做:

object_dict = {id(x): x for x in object_list}

object_dict = dict((id(x), x) for x in object_list)

关于python - 将 Python 对象列表减少为 object.id -> object 的 dict,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3070242/

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