2018-07-23 python学习——字典

字典也是一种容器类型的数据类型(序列),存的数据是以键值对的形式出现的,字典中的元素全部都是键值对

字典是可变的(可是增删改),但是是无序的(不能使用下标)

*键是唯一的

键值对: 键:值(key:value); 键值对中key是形式,值才是真正要存的内容

键:理论上可以是任何不可变的数据类型,但是实际开发的时候一般使用字符串作为key
值:可以是任意数据类型数据

1.声明一个字典

"""a.创建一个字典变量"""
dict1 = {}  # 创建一个空的字典
print(type(dict1))

dict2 = {'a': 1, 'b': 'abc', 10: [1, 2, 3], ('a', 'b'): 'abc'}
print(dict2)

dict2 = {'a': 1, 'b': 'abc', 'a': 100}
print(dict2)

"""b.将其他数据类型转换成字典"""
dict3 = dict([(1, 2), (2, 3)])  # 了解
print(dict3)

2.字典的增删改查

"""a.查:获取字典的元素的值
字典获取元素的值是通过key来获取的
字典[key]
"""
person = {'name': '路飞', 'age': 17, 'face': 90}
print(person['name'], person['face'])
# print(person['aaa'])  # 如果key不存在,会报KeyError

"""
字典.get(key)
"""
print(person.get('name'))
print(person.get('aaa'))  # 如果key不存在,返回None

"""
注意:如果key值确定存在,使用[]语法去获取值。不确定key值是否存在才使用get方法去获取值
"""

"""b.增加元素\修改元素
通过key获取字典元素,然后赋值。当key本身就存在的时候,就
是修改元素的值;不存在的时候就是给字典添加键值对
"""
person['height'] = 1.8
print(person)

person['age'] = 18
print(person)

"""c.删除: 删除的是键值对
del 字典[key]   ---- 注意:key如果不存在会报错
"""
del person['face']
print(person)

"""
字典.pop(key)  --- 会返回被删除的键值对对应的值
"""
age = person.pop('age')
print(person, age)

3.相关的数组属性(了解)

字典.keys():获取字典所有的key,返回值的类型是dict_keys,但是可以把它当成列表来使用
字典.values():获取字典所有的值(value)
字典.items(): 将字典中所有的键值对转换成一个一个的元
组,key作为元组的第一个元素,value作为元组的第二个元素

student_dict = {'name': '张三', 'study_id': "py1805001", 
'scores': {'english': 60, 'math': 100}}
keys = student_dict.keys()
print(keys, type(keys))
# 遍历获取每个key
for key in keys:
    print(key)

print(student_dict.values())

print(student_dict.items())

4.遍历字典

a.直接遍历字典获取到的是所有的key(推荐使用)

for key in student_dict:
    print(key, student_dict[key])

b.遍历直接获取到key和value(不推荐使用)(增加运算负荷)

for key, value in student_dict.items():
    print(key, value)

for value in student_dict.values():
    print(value)

5.列表中有字典、字典中有字典、字典中有列表

声明一个变量,作用是用来存储一个班级的学生的信息。其中学生的信息包括姓名、性别、年龄、电话
至少存三个学生信息

class1 = [
    {'name': '张三', 'age': 23, 'sex': '男', 'tel': '15300022777'},
    {'name': '李四', 'age': 25, 'sex': '女', 'tel': '12779922'},
    {'name': '王二麻子', 'age': 20, 'sex': '男', 'tel': '12553'}
]

class1 = {
    'name': 'py1805',
    'address': '19-1',
    'students':[
        {'name': '张三', 'age': 18},
        {'name': '李四', 'age': 28},
        {'name': '王五', 'age': 20},
    ]
}

6.其他操作

1.fromkeys()
dict.fromkeys(序列, value):创建一个新的字典,序列中的元素作为key,value作为值

# new_dict = dict.fromkeys('abc', '100')
# new_dict = dict.fromkeys(range(10), '100')
new_dict = dict.fromkeys(['abc', 'dcc', '123'], '100')
print(new_dict)

2.in
key in 字典: 判断字典中是否存在指定的key

dog_dict = {'color': 'white', 'age': 3,  'type': '土狗'}
print('color' in dog_dict)  # 判断的是键是否存在
print('white' in dog_dict)

3.update
字典1.update(字典2): 使用字典2的键值对去更新字典1中的键值对。如果字典2中对应键值对在字典1中不存在,就添加。存在就更新

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

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,657评论 18 139
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,392评论 8 265
  • 前天晚上,我们的简书理财社群在主编大人亭主的安排下来了福利第二发:有幸能够听到理财达人“一一妈妈说理财”给我们理财...
    爱折腾的公子哥阅读 1,009评论 8 17
  • 一直很想打开这个账户,写出一些东西,表达出什么。现在13:49,我开始编辑下我的第一篇,感谢你的来访,希望你能留下...
    Gwperg阅读 201评论 0 0
  • 穷则独善其身,方始清明。 心无所属,了无牵挂。 夜,心乱。
    独孤泠阅读 102评论 0 0