method 1:
把dictionary中的元素分离出来放到一个list中,对list排序,从而间接实现对dictionary的排序。这个“元素”可以是key,value或者item。
method2:
#用lambda表达式来排序,更灵活:
sorted
(
dict
.items(),
lambda
x, y:
cmp
(x[
1
], y[
1
]))
#降序
sorted
(
dict
.items(),
lambda
x, y:
cmp
(x[
1
], y[
1
]), reverse
=
True
)
|
下面给出python内置sorted函数的帮助文档:
sorted(...)
sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
list排序:
list有sort方法:
如:
>>> s=[2,1,3,0]
>>> s.sort()
[0, 1, 2, 3]
二,set和list
set转成list方法如下: list转成set方法如下:
s = set('12342212') l = ['12342212']
print s # set(['1', '3', '2', '4']) s = set(l[0])
l = list(s) print s # set(['1', '3', '2', '4'])
l.sort() # 排序 m = ['11','22','33','44','11','22']
print l # ['1', '2', '3', '4'] print set(m) # set(['11', '33', '44', '22'])
可见set和lsit可以自由转换,在删除list中多个/海量重复元素时,可以先转换成set,然后再转回list并排序(set没有排序)。此种方法不仅方便且效率较高。
三,input和raw_input
raw_input() 直接读取控制台的输入(任何类型的输入它都可以接收)。而对于 input() ,它希望能够读取一个合法的 python 表达式,即你输入字符串的时候必须使用引号将它括起来,否则它会引发一个 SyntaxError 。
raw_input() 将所有输入作为字符串看待,返回字符串类型。而 input() 在对待纯数字输入时具有自己的特性,它返回所输入的数字的类型( int, float )
input() 本质上还是使用 raw_input() 来实现的,只是调用完 raw_input() 之后再调用 eval() 函数,所以,你甚至可以将表达式作为 input() 的参数,并且它会计算表达式的值并返回它。
四,range和xrange
range会直接生成一个list对象
xrange 用法与 range 完全相同,所不同的是生成的不是一个list对象,而是一个生成器,每次调用返回其中的一个值。
要生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间。
所以xrange做循环的性能比range好,尤其是返回很大的时候。尽量用xrange吧,除非你是要返回一个列表。
五,get
get(a,""):获得a的值,若没有则返回空
六,map
集合支持一系列标准操作,包括并集、交集、差集和对称差集,例如:
a = t | s # t 和 s的并集
b = t & s # t 和 s的交集
c = t – s # 求差集(项在t中,但不在s中)
d = t ^ s # 对称差集(项在t或s中,但不会同时出现在二者中)
详细介绍可参考:http://blog.csdn.net/isoleo/article/details/13000975
http://blog.csdn.net/luo123n/article/details/49849649
http://www.cnblogs.com/kex1n/p/5971590.html
九,Python操作json
json.dumps字符编码,不能显示中文问题:
要想得到字符串的真实表示,需要用到参数ensure_ascii=False(默认为True):
>>> json.dumps(obj,ensure_ascii=False)
'{"name": "\xe6\xb5\x8b\xe8\xaf\x95"}'
>>> print json.dumps(obj,ensure_ascii=False)
{"name": "测试"}
十,shell切分文件--split