下面介绍跟字典相关的一些代码的写法
我们先定义一个dictionary
mydict = {\'a\': 1,\'b\': 2, \'c\': 3}
常见到的写法
mydict.has_key(\'a\')
推荐更pythonic写法
\'a\' in mydict
常见到的写法
not \'a\' in mydict
推荐更pythonic写法
\'a\' not in mydict
常见到的写法
if \'d\' not in mydict:
mydict[\'d\'] = 0
return mydict[\'d\']
推荐更pythonic写法
return mydict.get(\'d\', 0)
print mydict.setdefault(\'e\', [])
setdefault
方法会返回mydict[\'e\']
的值如果\'e\'
元素存在, 如果不存在, 则会把mydict[\'e\']
设置为[]
, 然后返回
mydict = defaultdict(list)
for x in [\'a\', \'b\']:
mydict[x].append(100)
defaultdicy(list)
生成的mydict
的每个元素的默认值都是空的list
mydict = {\'a\': 1,\'b\': 2, \'c\': 3}
for k, v in mydict.iteritems():
print k
像上面这段代码输出结果是什么? 是 a b c
?
答案是不一定
, 不相信你可以重复试几次, 有可能是a c b
之类的结果
所以for in
遍历dictionary的时候, 遍历顺序不一定
跟定义字典的时候元素排列顺序一致
至于为什么, 跟CPyhon的实现有关, 稍后我再详细解释
如果你需要一致的顺序, 请使用OrderedDict