4.字典知识汇总

  1. 使用函数dict 从其他映射(如其他字典)或者键值对序列创建字典。
items = [("name","john"),("age",123)]
dItems = dict(items)
print(dItems)#{'name': 'john', 'age': 123}

#关键字实参
dItems = dict(name='jay',age=12)
print(dItems)#{'name': 'jay', 'age': 12}
  1. 基本的字典操作
  • len()返回字典中包括的项目数
  • d[key] 返回与key关联的value
  • d[key]=value 修改字典中的项
  • del d[key] 删除健为key的项
  • key in d 检查字典是否包含键key
#len()返回字典中包括的项目数
print("dItems 中元素的个数是: %d" %(len(dItems)))
#d[key] 返回与key关联的value
print("name = %s" %(dItems['name']))
#d[key]=value 修改字典中的项
dItems['age'] = 23
print("修改年龄后是:%d" %dItems['age'])

#del d[key] 删除健为key的项
del dItems['name']
dItems['name'] = '六小龄童'

print("我的艺名是:%s,年龄是 %d" %(dItems['name'],dItems['age']))
#key in d 检查字典是否包含键key
if 'name' in dItems:
    print(dItems['name'])
  1. 将字符串格式设置功能用于字典
books = {'book1':'人间失格',"book2":"悲惨世界"}
print("book1 的名称是{book1}".format_map(books))
  1. 字典方法
  • clear
dict2 = dict([("语文",99),("英语",34)])
dict2.clear()
print(dict2)#{}
  • copy
    如果替换副本中的值,原件不受影响,如果就地修改副本中的值(而不是替换),原件也会发生变化。
x = {'username':'admin','machines':['foo','bar','baz']}
y = x.copy()
y['username'] = 'mlh'
print(x)#{'username': 'admin', 'machines': ['foo', 'bar', 'baz']}
y['machines'].append('hod')
print(y)#{'username': 'mlh', 'machines': ['foo', 'bar', 'baz', 'hod']}
print(x)#{'username': 'admin', 'machines': ['foo', 'bar', 'baz', 'hod']}

为了避免原件受影响,因此可以用 deepcopy

from copy import deepcopy
x = {'username':'admin','machines':['foo','bar','baz']}
z = deepcopy(x)
print(z)#{'username': 'admin', 'machines': ['foo', 'bar', 'baz']}
z['username'] = 'jone'
z['machines'].clear()
print(x)#{'username': 'admin', 'machines': ['foo', 'bar', 'baz']}
print(z)#{'username': 'jone', 'machines': []}
  • fromkeys
    只用key就可以生成字典,fromkeys 的第一个参数是一个键的列表,第二个参数可加可不加,不加默认所有键对应的值是None,加的话就是指定键对应的值是第二个参数
dict_k = {}.fromkeys(['name','age'])
print(dict_k)#{'name': None, 'age': None}
dict_k1 = dict.fromkeys(['name','age'])
print(dict_k1)#{'name': None, 'age': None}
print({}.fromkeys(['name','age'],'~~~'))#{'name': '~~~', 'age': '~~~'}
  • get
    get(key,default_value)
    如果字典中有key,就返回key的value,否则默认返回None,如果指定了default_value,则返回default_value,这个方法不会抛出异常
x = {'username':'admin','machines':['foo','bar','baz']}
print(x.get('username'))#admin
print(x.get('age'))#None
print(x.get('sex','F'))#F
  • items
    返回包含字典项的列表,返回类型是dict_items类型
x = {"name":"jone","sex":"F","age":23}
y = x.items()
print(y)#dict_items([('name', 'jone'), ('sex', 'F'), ('age', 23)])
print(len(y))#3
  • keys
    返回key的字典视图key的列表,类型是dict_keys
x = {"name":"jone","sex":"F","age":23}
print(x.keys())#dict_keys(['name', 'sex', 'age'])
  • pop
    获取key对应的value,并从字典中删除
x = {"name":"jone","sex":"F","age":23}
print(x.pop('name'))#jone
print(x)#{'sex': 'F', 'age': 23}
  • popitem
    因字典没有先后顺序,所以该方法的作用是从字典中随机弹出一项
x = {"name":"jone","sex":"F","age":23}
print(x.popitem())
  • setdefault
    设置字典当键不存在时,设置默认值,如果键存在就不设置,只返回键对应的值
x = {"name":"jone","sex":"F","age":23}
x.setdefault('sal',2003.34)
print(x)#{'name': 'jone', 'sex': 'F', 'age': 23, 'sal': 2003.34}
x.setdefault('address')
print(x)#{'name': 'jone', 'sex': 'F', 'age': 23, 'sal': 2003.34, 'address': None}
x.setdefault('address','has ming')#{'name': 'jone', 'sex': 'F', 'age': 23, 'sal': 2003.34, 'address': None}
  • update
    使用一个字典中的项来更新另外一个字典
x = {"name":"jone","sex":"F","age":23}
y = {"name":"li","age":45}
x.update(y)

如果y中的键在x中不存在,那么就把字典y中的项加入到x中,如果键在x中存在就更新之

x = {"name":"jone","sex":"F","age":23}
y = {"name":"li","age1":45}
x.update(y)
print(x)#{'name': 'li', 'sex': 'F', 'age': 23, 'age1': 45}
  • values
    返回一个由字典中的值组成的字典视图
dict1 = dict([("语文",23),("数学",34)])
print(dict1.values()) # dict_values([23, 34])
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,752评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,100评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,244评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,099评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,210评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,307评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,346评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,133评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,546评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,849评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,019评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,702评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,331评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,030评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,260评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,871评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,898评论 2 351

推荐阅读更多精彩内容

  • 当《撒娇女人最好命》刚出预告片的时候,同事便大声嚷嚷着说:“一定要去看。” “干嘛?不会是要学吧?”我调侃她道。 ...
    鱼琪儿阅读 325评论 0 7
  • 佛教认为富贵的正因和助缘分别是:施舍财物和把握机缘。 施舍财物是富贵的正因,拼命工作只是导致富贵的一种助缘。假如...
    春天的学生阅读 120评论 1 0
  • 41、【WAP】(Wireless Application Protocol)为无线应用协议,是一项全球性的网络通...
    爱摄影的奥派阅读 128评论 0 0