itemgetter()用于定义获取对象第几维的数据的一个函数,并非是直接取值,需作用到具体的对象(列表、元祖、字典等)才会进行取值。
list1 = {"name":"hanqingqing","id":7,"sex":"女","height":160}
dd = (5,4,3,2)
list2 = [(1,3,5),(2,4,8),(3,6,9)]
a = itemgetter(1) #定义一个函数,用于获取对象的第*维的值
aa = a(dd) #aa = 4 将定义的函数用在dd元祖中,即获取dd元祖第1维的值
b = itemgetter("sex") #定义一个函数,用于获取对象的某个键值数据
bb = b(list1) #bb = "女" 获取list1中键值为"sex"的数据值
c = itemgetter(0,1) #定义一个函数,用于获取对象的第0维和第1维的值,并以元祖形式返回
cc = c(list2) #cc = ((1, 3, 5), (2, 4, 8))
当itemgetter()被传入多个值时,作用的函数将以元祖形式返回指定索引的值,如c。
排序:
l = []
print("请输入:")
while True:
s = input()
if not s:
break
l.append(tuple(s.split(",")))
print(sorted(l, key=itemgetter(0,1,2))) #itemgetter(0,1,2) 按0,1,2维度进行排序
sorted()需接受一个key参数,这个参数是callable类型,key(itemgetter())会作用于列表l,然后返回被用来排序的值。itemgetter()就是负责创建这个callable对象的。如果传多个参数给itemgetter(),它生成的callabe对象会返回一个包含所有值的元组,sort()函数会根据元组中元素顺序去排序。