gpt4 book ai didi

python - 如何按元组值对存储在dict值中的namedtuple进行排序

转载 作者:太空宇宙 更新时间:2023-11-04 01:26:39 24 4
gpt4 key购买 nike

我将 namedtuple 作为值存储在字典中,如下所示

AssetList = {}
Asset = namedtuple('Asset_Desc', 'value weight value_per_unit')
for i in range(0,items):
AssetList[i] = Asset(values[i], weights[i], values[i]/weights[i])
print AssetList

我想根据“value_per_unit”对字典进行排序,所以我写了如下内容。但我想知道'key'应该是什么?我尝试了 itemgetter 和 attrgetter,但似乎我弄错了索引,我不知道如何引用 Asset.value_per_unit。有什么想法吗?

Sorted_AssetList = sorted(AssetList.iteritems(), key=???)
print Sorted_AssetList

最佳答案

您正在对一个看起来像 (1, asset) 的键值元组进行排序,因此您可以使用一个函数:

..., key=lambda pair: pair[1].value_per_unit)

此外,这似乎不是字典的好用途。我会改用列表:

Asset = namedtuple('Asset_Desc', 'value weight value_per_unit')

assets = []

for i in range(items):
assets.append(Asset(values[i], weights[i], values[i]/weights[i]))

并对 enumerate() 的结果进行排序,如果您确实需要索引:

sorted_assets = sorted(enumerate(assets), key=lambda pair: pair[1].value_per_unit)

否则,您可以只使用attrgetter:

from operator import attrgetter

sorted_assets = sorted(assets, key=attrgetter('value_per_unit'))

关于python - 如何按元组值对存储在dict值中的namedtuple进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17358297/

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