几个小问题:判断字典的键值是否存在,排序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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 手边放了一张你的照片。大二的你,20岁,一件驼色的毛衣,一条牛仔裤,一双帆布鞋,没有发型,笑得很不知所以。我还记得...
    16aa5fab5f62阅读 323评论 0 0
  • 要知道会静守内心躁动的人才能在猝不及防的暴露现实中全身而退且深刻坚守自我价值!
    73d478046547阅读 174评论 0 0
  • 今天是礼拜四,搞完活动了。终于下午下了个早班,早早的就去接孩子了,等了好长时间才等到她们班的同学出来,就是没看到自...
    1d7299ec768e阅读 246评论 0 3
  • 今天看了一位叫张婷的网友的微信作品,也通过她知道了简书,突然很被她积极的态度和行动打动了,我想,如果我也像她那...
    你的Min阅读 159评论 0 2