几个小问题:判断字典的键值是否存在,排序sort,six,U开头的字符串怎么转码

1. 判断字典的键值是否存在:

1. has_key()

a = {'a' : 1}
print a.has_key('a'):

#####
True

2. in

a = {'a': 1}
print 'b' in a

#####
False

2. 排序sort

demo = {'c': [('a', 20), ('b', 40)], 'd': [('e', 10), ('f', 1)]}

# 方法1
b = sorted(demo.items(), key=lambda x: x[1][0][1])
print b

# 方法2
for i in demo.values():
     i.sort(key=lambda x: x[1])
print demo

#####
[('d', [('e', 10), ('f', 1)]), ('c', [('a', 20), ('b', 40)])]
{'c': [('a', 20), ('b', 40)], 'd': [('f', 1), ('e', 10)]}

可以看出,方法1的sorted()方法是有返回值的,该方法排的是元祖内第二个元素的值,但是它比的是'a'的值与'e'的值相比,并不是同级相比。
方法2的sort()方法是没有返回值的,是在原先的字典中直接排序的,在这里是对列表内元祖的值进行排序,是在列表内部排序,对比的是'a''b'的值。

参考:

python sort函数内部实现原理
Python 字典 列表 嵌套 复杂排序大全

3. six

说白了,就是一个兼容python2和python3的一个包,会根据不同的版本返回与之相应的函数,我用到的是itervalues()

参考:

python之six用法

4.U开头的字符串怎么转码

通常会有字符串像这样'u\u534e\u5317 3 \u53ef\u7528\u533a A',而且在一些情况下会出错,这时候,为了保证代码的适用性,可以添加这个:

from __future__ import absolute_import, print_function, unicode_literals

absolute_import:是把import的目录从最开始找(可以用.),print_function是把print sth改为print(sth),unicode_literals:可把asci码转成unicode

你可能感兴趣的:(几个小问题:判断字典的键值是否存在,排序sort,six,U开头的字符串怎么转码)