注意:
# 字典是可变类型
# 字典中的数据是无序的
# 一个字典条目的语法是 键:值
# 任何不可变数据类型都可以作为条目的键
知识点一:创建
键:必须独一无二(如果键重复存入,会被覆盖),只能是不可变类型(常用字符串和数字)
值:可以是任意数据类型
知识点二:访问数据项
通过key------dic[key]
如果key不存在,报KeyError 没有索引!不能分片!
知识点三:更新数据项
dic[key] = value 如果key不存在,就是新增数据项
知识点四:删除数据项
del dic[key] 删除键是‘key‘的条目
del dict 删除词典
知识点五:字典方法
判断key存在
*has_key(key)
*in 、not in
*dict.keys() 返回一个包含字典所有KEY的列表
*dict.values() 返回一个包含字典所有value的列表
*dict.items() 返回一个包含所有(键,值)元祖的列表
dic.pop(key) 删除键key的项并返回key对应的 value值,如果key不存在,报错
dict.clear() 删除字典中的所有项或元素
dict.copy() 返回一个字典浅拷贝的副本
*dict.fromkeys(seq, val=None) 创建并返回一个新字典,以seq中的元素做该字典的键,val做该字典中所有键对应的初始值(默认为None)
***dict.get(key, default=None) 返回字典中key对应的值,若key不存在字典中,则返回default的值(default默认为None)
*adict.update(bdict) 将字典bdict的键值对添加到字典adict中
key存在,就更新value。key不存在就新增数据项。
字典合并 update
知识点六:运算
字典不支持拼接和重复操作符(+,*)
字典的比较操作 :长度等、键等、值等
知识点七:迭代
遍历字典的key
for key in adict.keys():print key
遍历字典的value
for value in adict.values(): print value
遍历字典的项
for item in adict.items():print item
遍历字典的key-value
for key, value in adict.items(): print ‘key=%s, value=%s‘ %(key, value)
*迭代器
iter()函数可以将可迭代对象,变成迭代器
迭代器有next()方法返回下一项,当没有值时,抛出StopIteration错误
dict.iteritems()、dict.iterkeys()、dict.itervalues()
与它们对应的非迭代方法一样,不同的是它们返回一个迭代子,而不是一个列表;
知识点八:排序
sorted(dic,value,reverse)
dic为可以迭代的对象,value 为排序的对象(这里指键或键值)
reverse:注明升序还是降序,True--降序,False--升序(默认)
键排序
--sorted(dict.keys())
--sorted(dict.items(), key=lambda item:item[0])
值排序
--sorted(dict.values())
--sorted(dict.items(), key=lambda item:item[1])
*collections:OrderedDict
OrderedDict的Key会按照插入的顺序排列,不是Key本身排序
知识点九:类型转换
其他类型转字典:
字符串:eval(str)
列表:
二维列表转换
手动构造
利用zip
字典转列表:
list(dic) == dict.keys()
dict.keys() dict.values()
字典转元组:
tuple(dic) -- 只包含key值
字典转字符串:
str(dic)
练习一:把字符串”k1:1|k2:2|k3:3”处理成 python 字典的形式:{‘k3‘: 3, ‘k2‘: 2, ‘k1‘: 1
string = "k1:1|k2:2|k3:3"dic={}print string.split("|")for kv in string.split("|"): k,v =kv.split(":") if v.isdigit(): v=int(v) dic[k]=vprint dic |
练习二:
原文地址:https://www.cnblogs.com/ylpaj/p/9300823.html