【08】字典

1.什么是字典(dict)

  • 字典是python内置的一个容器型数据类型:可变(支持增删改)、无序(不支持下标操作)
  • {键1:值1, 键2:值2,键3:值3,...}
  • 键(key):a.不可变 b.唯一
  • 值(value):和列表元素要求一致
注意:键值是成对出现的;字典存数据,实质存的是值,键是值的索引。
dict1 = {'a': 100, 'b': 'abc', 'c': [1, 2], 'd': {'a': 100}}
print(dict1)

dict1 = {'a': 100, 'b': 'abc', 'a': [1, 2]}
print(dict1)   # {'a': [1, 2], 'b': 'abc'}

2.什么时候用字典

  • 如同时保存多个数据是具有相同意义的数据,用列表
  • 如果同时保存多个数据的意义不同,就使用字典

3.增删改查

3.1查

  • 1)获取key对应的值:
方法一:dict[key]
注意:key不存在的时候会报错
dog1 = {'name': '大黄', 'type': '中华田园犬', 'color': 'yellow', 'age': 3}
print(dog1['type'])
# print(dog1['gender'])    # KeyError: 'gender'
方法二:dict.get(key)
注意:如果key值不存在,则返回None
  • dict.get(key, 默认值) (如果key不存在返回指定默认值)
print(dog1.get('color'))
print(dog1.get('gender'))
print(dog1.get('gender', '公狗'))
  • 2) 遍历
注意:直接遍历字典拿到是key
dog1 = {'name': '大黄', 'type': '中华田园犬', 'color': 'yellow', 'age': 3}
for key in dog1:
    print(key, dog1[key])

3.2增/改 - 添加键值对

1) dict[key] = value
  • 当key不存在的时候就是添加键值对;当key存在的时候,就是修改key对应的值
film = {'name': '流浪地球', '主演': '吴京', 'time': '2019-2-5'}
film['票房'] = '40亿'
print(film)

film['time'] = '2019-2-6'
print(film)

film.setdefault('a', 10)
print(film)
2) dict.setdefault(key, value)
  • 只能添加键值对,不能修改
film.setdefault('name', '战狼2')
print(film)

3.3 删 - 删除键值对

1)del dict[key]
  • 删除字典中key对应的键值对,如果不存在则会报错
film = {'name': '流浪地球', '主演': '吴京', 'time': '2019-2-5'}
del film['time']
print(film)
2)dict.pop(key)
  • 从字典中取出key对应的值,结果是key对应的值
name = film.pop('name')
print(film, name)

4.相关运算符

1)只支持比较运算符
print({'a': 10, 'b': 20} == {'b': 20, 'a': 10})    # True
2)in / not in- key in dict (判断字典中是否存在某个key对应的键值对)
student = {'name': '小明', 'age': 20, 'tel': '16362738493'}
print('小明' in student)   # False
print('name' in student)    # True
3) len(), max(), min()
  • dict() - 本身是一个序列,序列中元素是小序列,小序列必须有且只有2个元素,而且这个2个元素中的第一个元素是不可变的
  • 注意:取最大值最小值是取key的最大值和最小值;字典转列表/元祖的时候,是将字典的key取出来作为列表/元祖的元素
print(len(student))
print(max(student))
print(dict(['cb', ['a', 100],  [1000, [1]] ]))
print(list(student))

#3
#tel
#{'c': 'b', 'a': 100, 1000: [1]}
#['name', 'age', 'tel']

5.相关方法

1)dict.clear() --清空字典
student.clear()
print(student)
2)字典.copy() - 复制字典的内容,产生一个新的字典
student = {'name': '小明', 'age': 20, 'tel': '16362738493'}
student1 = student.copy()
student1['name'] = '小花'
print(student)
3) dict.fromkeys(序列,值) - 创建一个新的字典,将序列中的元素作为新字典的key,指定的值作为每个key对应的值
new_dict = dict.fromkeys(['name', 'age', 'gender'], None)
print(new_dict)

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

推荐阅读更多精彩内容