问:在Python的功能函数:排序视频中,最后一部分是Kenneth Love同时使用itemgetter和attrgetter。我对为什么/如何以不同方式使用两者感到困惑。为什么number_of_pages是对象属性,而publish_date是要引用的项目?查看json文件,似乎publish_date和number_of_pages的写入/存储方式相似,应该以相同的方式调用。我试过翻转键(将attrgetter用于publish_date,将itemgetter用于number_of_pages),但是没有用。有人可以帮我理解为什么吗?
从 运算符
import json导入attrgetter ,itemgetter类书籍:def __init__ (self ,** kwargs ):用于k ,v中的kwargs 。items ():setattr (self ,k ,v )def __str__ (self ):返回self 。title def __repr__ (self ):返回
str (self )
def get_books (filename ,raw = False ):试试:data = json 。负载(开放(文件名)) ,除了FileNotFoundError :返回[]其他:如果原料:返回数据[ “书” ]返回[书(**书)的书的数据[
'books' ]]
BOOKS = get_books ('books.json' )RAW_BOOKS = get_books ('books.json' ,raw = True )#pub_sort = sorted(RAW_BOOKS,key = itemgetter('publish_date'))#print(pub_sort [ 0] [ '出版日期'],pub_sort [-1] [ '出版日期'])pages_sort =排序(书籍,键= attrgetter ('NUMBER_OF_PAGES' ))打印(pages_sort [ 0 ] 。NUMBER_OF_PAGES ,pages_sort
[ - 1 ] 。number_of_pages )
#important_list = [5,3,1,2,4] #important_list.sort()#不好的主意,对列表进行排序#sorted(important_list)#对列表的副本进行排序
这是json文件中的几个示例
{ “ books” : [ { “ number_of_pages” : 849 ,
“ price” :13.550000000000001 ,“ publish_date” :2011 ,“ subjects” :[ “ Time travel” ,“ Assassination” ],“ title” :“ 11/22/63 “ },{ ” number_of_pages“ :732 ,” price“ :7.9900000000000002 ,” publish_date“ :1999 ,” subjects“ :[ “作者” ,
答://获取给定类别的ID
$ category_id = get_cat_ID('62');
//获取该类别的URL
$ category_link = get_category_link($ category_id);
?>
< -打印链接到这一类- >!<一个HREF = “<PHP回声esc_url($ category_link);?>”类= “BTN BTN-默认BTN-LG管理-BTN”角色= “按钮”标题= “显示所有包” >显示所有包</ a > ```这是我的代码。
答:使用attrgetter和之间的具体区别itemgetter是目标对象。由于BOOKS是具有attribute的对象,并且RAW_BOOKS是一个充满项目的“容器”(列表,字典,集合),因此选择变得更加清晰。