sort函数只有列表中才有
字符串 元组 字典都没有这个函数如下所示:
L=[1,2,3,4,5,1,2,89,52,36]
L.sort()
print(L)
"""
输出结果
[1, 1, 2, 2, 3, 4, 5, 36, 52, 89]
"""
L=(1,2,3,4,5,1,2,89,52,36)
L.sort()
print(L)
"""
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-31-e85fcb0f54b1> in <module>()
1 L=(1,2,3,4,5,1,2,89,52,36)
----> 2 L.sort()
3 print(L)
AttributeError: 'tuple' object has no attribute 'sort'
"""
L='1321351'
L.sort()
print(L)
"""
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-32-e8a40f9ae604> in <module>()
1 L='1321351'
----> 2 L.sort()
3 print(L)
AttributeError: 'str' object has no attribute 'sort'
"""
MAP={'abc':123,"edf":23,'rty':12,'ab':456,'ghj':123,'aef':159}
MAP.sort()
print(MAP)
"""
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-33-ba85bbe123f0> in <module>()
1 MAP={'abc':123,"edf":23,'rty':12,'ab':456,'ghj':123,'aef':159}
----> 2 MAP.sort()
3 print(MAP)
AttributeError: 'dict' object has no attribute 'sort'
"""
以上就是他们的情况
sort函数只是列表自有的排序函数L.sort()返回值是None
L=[1,5,2,3]
print(L.sort())
"""
None
"""
那么字符串,元组,字典没有自己的排序函数怎么办?python的设计者就为他们写了这样一个函数sorted
L='21531351589'
P=(1,8,3,2,5,4)
print(sorted(L))
print(sorted(P))
"""
['1', '1', '1', '2', '3', '3', '5', '5', '5', '8', '9']
[1, 2, 3, 4, 5, 8]
"""
他们最终都会变成列表,那么如果我们想把他们变回去怎么办呢?请看下面的代码
L='21531351589'
P=(1,8,3,2,5,4)
print(sorted(P))
print(sorted(P))
print(tuple(sorted(P)))
print(''.join(x for x in sorted(L)))
"""
[1, 2, 3, 4, 5, 8]
[1, 2, 3, 4, 5, 8]
(1, 2, 3, 4, 5, 8)
11123355589
"""
join函数有什么作用呢用法是 str.join(需要被用字符str连接起来的字符)如:
print('-'.join(x for x in ['1','2','3']))
"""
结果输出:
1-2-3
"""
下来看对字典的使用
MAP={'abc':123,"edf":23,'rty':12,'ab':456,'ghj':123,'aef':159}
print(sorted(MAP))
print(sorted(MAP.keys()))
print(sorted(MAP.values()))
print(sorted(MAP.items()))
print(sorted(MAP.items(),key=lambda x:x[0]))
print(sorted(MAP.items(),key=lambda x:x[1]))
print(sorted(MAP.items(),key=lambda x:(x[0],x[1])))
print(sorted(MAP.items(),key=lambda x:(x[1],x[0])))
"""
['ab', 'abc', 'aef', 'edf', 'ghj', 'rty']
['ab', 'abc', 'aef', 'edf', 'ghj', 'rty']
[12, 23, 123, 123, 159, 456]
[('ab', 456), ('abc', 123), ('aef', 159), ('edf', 23), ('ghj', 123), ('rty', 12)]
[('ab', 456), ('abc', 123), ('aef', 159), ('edf', 23), ('ghj', 123), ('rty', 12)]
[('rty', 12), ('edf', 23), ('abc', 123), ('ghj', 123), ('aef', 159), ('ab', 456)]
[('ab', 456), ('abc', 123), ('aef', 159), ('edf', 23), ('ghj', 123), ('rty', 12)]
[('rty', 12), ('edf', 23), ('abc', 123), ('ghj', 123), ('aef', 159), ('ab', 456)]
"""
对于上面8条结果我们一条条来分析:
1.sorted(MAP)是默认对字典的keys来进行排序的,因此输出结果是对key排序
2.MAP.keys()是返回关键字keys的列表
MAP={'abc':123,"edf":23,'rty':12,'ab':456,'ghj':123,'aef':159}
P=MAP.keys()
print(P)
"""
dict_keys(['abc', 'edf', 'rty', 'ab', 'ghj', 'aef'])
"""
因此是对关键字排序
3.同理是对键值排序
MAP={'abc':123,"edf":23,'rty':12,'ab':456,'ghj':123,'aef':159}
P=MAP.values()
print(P)
"""
dict_values([123, 23, 12, 456, 123, 159])
"""
5.print(sorted(MAP.items(),key=lambda x:x[0]))
首先MAP.items()结果如下:
MAP={'abc':123,"edf":23,'rty':12,'ab':456,'ghj':123,'aef':159}
P=MAP.items()
print(P)
"""
dict_items([('abc', 123), ('edf', 23), ('rty', 12), ('ab', 456), ('ghj', 123), ('aef', 159)])
"""
key后面是一个lambda函数函数返回的是x[0],那么x是什么呢?
x就是列表dict_items中的元素即元组即:(‘abc’, 123),(‘edf’, 23)…
所以排序就是按照x[0]即关键字来给列表dict_items([(‘abc’, 123), (‘edf’, 23), (‘rty’, 12), (‘ab’, 456), (‘ghj’, 123), (‘aef’, 159)])排序
6.参照4.就是按照keys()的顺序给列表dict_items([(‘abc’, 123), (‘edf’, 23), (‘rty’, 12), (‘ab’, 456), (‘ghj’, 123), (‘aef’, 159)])排序因此顺序是按照Keys的顺序
7.print(sorted(MAP.items(),key=lambda x:(x[0],x[1])))的意思就是先按x[0]排序如果x[0]相同再按x[1]排序
8.同理所以对于(‘abc’, 123), (‘ghj’, 123)先按values()排序是相同的再按keys()排序就是这样的结果
其实sorted还有一个参数
sorted(迭代变量,key,reverse)reverse的值有两个True或者False默认后者
他的意思就是是否需要逆序输出
因此下面的代码会输出如下结果:
MAP={'abc':123,"edf":23,'rty':12,'ab':456,'ghj':123,'aef':159}
print(sorted(MAP))
print(sorted(MAP.keys()))
print(sorted(MAP.values()))
print(sorted(MAP.items()))
print(sorted(MAP.items(),key=lambda x:x[0],reverse=True))
print(sorted(MAP.items(),key=lambda x:x[1],reverse=True))
print(sorted(MAP.items(),key=lambda x:(x[0],x[1]),reverse=True))
print(sorted(MAP.items(),key=lambda x:(x[1],x[0]),reverse=True))
"""
['ab', 'abc', 'aef', 'edf', 'ghj', 'rty']
['ab', 'abc', 'aef', 'edf', 'ghj', 'rty']
[12, 23, 123, 123, 159, 456]
[('ab', 456), ('abc', 123), ('aef', 159), ('edf', 23), ('ghj', 123), ('rty', 12)]
[('rty', 12), ('ghj', 123), ('edf', 23), ('aef', 159), ('abc', 123), ('ab', 456)]
[('ab', 456), ('aef', 159), ('abc', 123), ('ghj', 123), ('edf', 23), ('rty', 12)]
[('rty', 12), ('ghj', 123), ('edf', 23), ('aef', 159), ('abc', 123), ('ab', 456)]
[('ab', 456), ('aef', 159), ('ghj', 123), ('abc', 123), ('edf', 23), ('rty', 12)]
"""
END…