Python中按值对字典列表排序的方法——使用itemgetter

本部分的前一篇文章讨论了使用lambda函数按值对字典列表进行排序的问题。 Python中按值对字典列表排序的方法——使用lambda函数 本文旨在使用itemgetter执行此功能,并展示明显的差异。

null

Itemgetter可以代替lambda函数来实现类似的功能。输出方式与sorted()和lambda相同,但内部实现不同。它获取字典的键并将它们转换为元组。它减少了开销,而且 更快 而且效率更高。” 操作人员 “模块必须导入才能正常工作。下面解释代码

# Python code demonstrate the working of sorted()
# and itemgetter
# importing "operator" for implementing itemgetter
from operator import itemgetter
# Initializing list of dictionaries
lis = [{ "name" : "Nandini" , "age" : 20 },
{ "name" : "Manjeet" , "age" : 20 },
{ "name" : "Nikhil" , "age" : 19 }]
# using sorted and itemgetter to print list sorted by age
print "The list printed sorting by age: "
print sorted (lis, key = itemgetter( 'age' ))
print ( "
"
)
# using sorted and itemgetter to print list sorted by both age and name
# notice that "Manjeet" now comes before "Nandini"
print "The list printed sorting by age and name: "
print sorted (lis, key = itemgetter( 'age' , 'name' ))
print ( "
"
)
# using sorted and itemgetter to print list sorted by age in descending order
print "The list printed sorting by age in descending order: "
print sorted (lis, key = itemgetter( 'age' ),reverse = True )


输出:

The list printed sorting by age: 
[{'age': 19, 'name': 'Nikhil'}, {'age': 20, 'name': 'Nandini'}, {'age': 20, 'name': 'Manjeet'}]

The list printed sorting by age and name: 
[{'age': 19, 'name': 'Nikhil'}, {'age': 20, 'name': 'Manjeet'}, {'age': 20, 'name': 'Nandini'}]

The list printed sorting by age in descending order: 
[{'age': 20, 'name': 'Nandini'}, {'age': 20, 'name': 'Manjeet'}, {'age': 19, 'name': 'Nikhil'}]

    itemgetter比lambda的优势

  • 表演 :itemgetter在时间上下文中的性能优于lambda函数。
  • 简洁的: :itemgetter在访问多个值时比lambda函数更简洁。
    
    itemgetter(1,3,4,5)  ---> Looks more concise
    key(s[1], s[2], s[3], s[4]) ---> Looks less concise
    

    本文由 曼吉星 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。

    如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享