源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

python基础教程之字典操作详解

  • 时间:2021-12-17 14:33 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:python基础教程之字典操作详解
字典 dictionary 1.键值对的集合(map) 2.字典是以大括号“{}”包围的数据集合 3.字典是无序的,在字典中通过键来访问成员。 可变的,可嵌套,可以原处修改扩展等,不产生新的字典 4.字典的键,可以是字符串(大小写敏感),数字常量或元组(不可变类型),同一个字典的键可以混用类型。字典的键必须是可哈希的 元组作为键的条件是,元组内的值都是不可变类型
[u]复制代码[/u] 代码如下:
a = (1,2)  #可以作为键 b = (1,2,[3,4])  #不可以
5.字典的值可以是任意类型,可以嵌套,可以自由修改 声明 创建字典的几种方式: 1.基本
[u]复制代码[/u] 代码如下:
d = {} #空字典 d = {'name':'tom', 'age':22} #等价 d = {} d['name'] = 'tom' d['age'] = 22
2.dict
[u]复制代码[/u] 代码如下:
d = dict() #空 d = dict(name='tom', age=22)   d = dict([('name','tom'), ('age',22)]) #等价 keys = ['name','age'] values = ['tom', 22] d = dict(zip(keys,values))
3.fromkeys 不指定default_value的话,默认None
[u]复制代码[/u] 代码如下:
>>> dict.fromkeys(['name','age'],'default_value') {'age': 'default_value', 'name': 'default_value'}
基本操作 0.获取帮助
[u]复制代码[/u] 代码如下:
help(dict)
1.判定键是否存在于字典中
[u]复制代码[/u] 代码如下:
if k in d:   #k not in     dosomething()
2.读取
[u]复制代码[/u] 代码如下:
d = {'a':1, 'b':2} print d['a']  #得到1,但是若键不存在,将引发异常KeyError。慎用,建议不使用
print d.get('c', 3) #得到3,get方法,若是键不存在,返回第二个参数default_value.若是没有设default_value返回None 处理missing-key错误三种方式,根据具体需要
[u]复制代码[/u] 代码如下:
if k in d:     print d[k] try:     print d[k] except KeyError:     dosomething() print d.get(k, default) #等价 d[k] if k in d else default
3.遍历 方式1:
[u]复制代码[/u] 代码如下:
for key in d:     print key, d[key] #等价 for key in d.keys()
方式2:
[u]复制代码[/u] 代码如下:
for key,value in d.items():     print key, value
4.修改方式1:某个键值对
[u]复制代码[/u] 代码如下:
d['key'] = 'newvalue'
方式2:批量添加或更新
[u]复制代码[/u] 代码如下:
#另一个字典 d.update({'key':'newvalue'})  #这里支持一整组值 #元组列表 d.update( [ ('a',1), ('b',2) ] ) #每个元组两个元素,(key,value) #**key d.update(c=3, e=4)
5.删除
[u]复制代码[/u] 代码如下:
del d['key'] value = d.pop('key') #删除并返回值 d.clear() #清空 6.其他: len(d)   #长度 d.keys()  #key列表 d.values()  #value列表 d.items()   #(key, value) 列表 c = d.copy()   #浅拷贝 #返回迭代器,节省内存 d.iterkeys() d.itervalues() d.iteritems() d.setdefault('name', 'ken') #若原来没有,设置,否则原值不变
其他 1.字典排序按照key排序
[u]复制代码[/u] 代码如下:
keys = d.keys() keys.sort() for key in keys:     print d.get(key)
按照value进行排序
[u]复制代码[/u] 代码如下:
sorted(d.items(), lambda x,y: cmp(x[1],y[1]))
另外:
[u]复制代码[/u] 代码如下:
#假设d为字典 sorted(d)  #返回同 sorted(d.keys()),返回的是key排序
2.自定义对象作为key 必须:
[u]复制代码[/u] 代码如下:
def __hash__(self):     pass def __eq__(self, other):     pass
3.字典拷贝浅拷贝:
[u]复制代码[/u] 代码如下:
c = d.copy() #
深拷贝必须用copy模块
[u]复制代码[/u] 代码如下:
form copy import deepcopy c = deepcopy(d)
4.一种使用场景假设有一个很大的列表l,假设10w条记录 有一个小列表b,要判断b中元素是否在l中 如果:
[u]复制代码[/u] 代码如下:
for i in b:     if i in l:         dosomething()
你会发现非常非常慢...因为第二个in语句,会遍历10w条…. 改进:
[u]复制代码[/u] 代码如下:
d = dict.fromkeys(l) for i in b:     if i in d:         dosomething() #空间换时间,O(n) -> O(1)
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部