本部分的前一篇文章讨论了使用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