python 排序字典时,“str”对象没有属性“match_key”[重复]

kuuvgm7e  于 2022-12-17  发布在  Python
关注(0)|答案(1)|浏览(115)

此问题在此处已有答案

(19个答案)
1小时前关闭。
完整错误:'str' object has no attribute 'match_key'
我试图根据对象中键的值对字典进行排序,但是我遇到了错误。进行这种排序的最佳方法是什么?
代码:

#part of loop

x = {
    'id': f'{item.id}',
    'post': item,
    'match_key': match_percentage

}

temp_dict.update(x)

sorted_dict = sorted(temp_dict, key=operator.attrgetter('match_key'))
6ojccjat

6ojccjat1#

如果你想按键对字典列表进行排序,你需要使用operator.itemgetter,如下所示:

from operator import itemgetter

xs = [
    { 'item': "Apple", 'match_key': 20 },
    { 'item': "Grape", 'match_key': 10 },
    { 'item': "Lemon", 'match_key': 50 }]

sorted_dict = sorted(xs, key=itemgetter('match_key'))

print(sorted_dict)
# [{'item': 'Grape', 'match_key': 10},
#  {'item': 'Apple', 'match_key': 20}, 
#  {'item': 'Lemon', 'match_key': 50}]

解释

dictionaries表示项的集合。因此,存储在字典中的值被视为items,而不是attributes。当我们考虑如何访问字典中的值时,这是有意义的。您可以使用 * 括号表示法 * []访问集合中的项,无论是通过索引位置还是键。但不能使用 * 点运算符 * .通过键检索字典值。因为它们没有作为属性存储在Dict上。

进一步阅读

相关问题