字典是另一种可变容器模型,且可存储任意类型对象。字典是无序的,因为它没有下标,用key来当索引,所以是无序的。

字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:

d = {key1 : value1, key2 : value2 }

键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

一个简单的字典实例:

dict1 = { 'abc': 456 };
dict2 = { 'abc': 123, 1: 37 };
dict3 = {'marry':[18,18612512981,'北京'],'amy':[20,18612512991,'山东'],'lily':[25,18612532981,'河南']

一、访问字典里的值

dict = {'marry':[18,18612512981,'北京'],'amy':[20,18612512991,'山东'],'lily':[25,18612532981,'河南']}
print(dict.get('maryy'))#获取marry的信息,这种方式如果key不存在的话,会返回None
print(dict['marry'])#获取marry的信息,这种方式如果key不存在的话,会报错
print('marry' in dict) #判断marry是否在这个字典中,返回True或者False

返回:

li
None
[18, 18612512981, '北京']
True

二、字典的操作

dict = {'name':'li','age':18,'sex':'女','addr':'昌平区','money':10000000 }
dict.setdefault('weight',130)
dict['shengao']=198
print(dict)

返回:

{'age': 18, 'addr': '昌平区', 'name': 'li', 'shengao': 198, 'sex': '女', 'weight': 130, 'money': 10000000}

dict = {'name':'li','age':18,'sex':'女','addr':'昌平区','money':10000000 }
dict['name']='小黑'#如果这个key存在的话,修改他的值,如果key不存在的话,新增一个
print(dict)

返回:

{'money': 10000000, 'name': '小黑', 'sex': '女', 'age': 18, 'addr': '昌平区'}

dict = {'name':'li','age':18,'sex':'女','addr':'昌平区','money':10000000 }
dict.pop('sex')#删除某个key
dict.popitem()#随机删除一个
del dict['age']#删除某个key
#d.clear()#清空字典
print(dict)

返回:

{'name': 'li', 'money': 10000000}

三、字典的内置方法

dict = {'stu1':'cc','stu2':'andashu','stu3':'niuniu'}
print(dict.values())#打印所有value
print(dict.keys())#打印所有的key
if 'stu2' in dict:#判断key是否在这个字典里头
print('存在')

返回:

dict_values(['andashu', 'niuniu', 'cc'])
dict_keys(['stu2', 'stu3', 'stu1'])
存在

四、字典的嵌套

stus = {
'ybq': {
'age': 18,
'sex': '男',
'addr': '昌平区',
'money': 10000000,
'jinku': {
'建行卡': 80000,
'工商卡': 800000,
'招商卡': 8000000
}
},
'tlx': {
'age': 19,
'sex': '女',
'addr': '昌平区',
'money': 10000000,
'huazhuangpin': ['chanle','haha']
},
'mpp': {
'age': 19,
'sex': '女',
'addr': '昌平区',
'money': 10000000,
"bag": {
'lv': '一车',
'鳄鱼':10
}
},
} all_money = stus['ybq']['jinku'].values()
print(all_money)
print(sum(all_money))
sum_money = 0
for money in all_money:
sum_money= sum_money+money
print(sum_money)

返回:

dict_values([8000000, 800000, 80000])
8880000
8880000

五、字典的循环

dic = {'stu1':'a','stu2':'b','stu3':'c'}
for k in dic:
print(k,dic[k])#打印key和value的值,推荐使用这种方式,速度快
# for k,v in dic.items():
# print(k,v)#打印key和value的值,这种方式不推荐,因为会把字典转换成列表,效率不高

返回:

stu2 a
stu3 b
stu1 c

python学习笔记(二)— 字典(Dictionary)的更多相关文章

  1. python学习笔记(6)——字典(Dictionary)

    dict= {key1 : value1, key2 : value2 ...} 关键词:字典中元素成对出现- key:value 格式- 两端{ } ,键:值,每对键值间用 ,隔开. 键key-唯一 ...

  2. python学习笔记整理——字典

    python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...

  3. python学习笔记(二)、字符串操作

    该一系列python学习笔记都是根据<Python基础教程(第3版)>内容所记录整理的 1.字符串基本操作 所有标准序列操作(索引.切片.乘法.成员资格检查.长度.最小值和最大值)都适用于 ...

  4. Python 学习笔记二

    笔记二 :print 以及基本文件操作 笔记一已取消置顶链接地址 http://www.cnblogs.com/dzzy/p/5140899.html 暑假只是快速过了一遍python ,现在起开始仔 ...

  5. (10.1)Python学习笔记二

    1.在项目工程中要模块化测试一个开发的功能,在测试通过后交付给项目组其他人员继续开发.要保证代码开发的性能和效率以及可扩展性. 2.项目工程中的文件夹分类要功能模块明确清晰,在python中引入某一个 ...

  6. python学习笔记(二):python数据类型

    上一篇博客写了python的入门和简单流程控制,这次写python的数据类型和各种数据类型的内置方法.一.数据类型是什么鬼?计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各 ...

  7. 【Python学习笔记】字典操作

    字典dict是Python中唯一内置的映射类型,由键值对组成,字典是无序的.字典的键必须是不变对象,如字符串.数字.元组等,而包含可变对象的列表.字典和元组则不能作为键.这里可变和不可变的意思是指这个 ...

  8. Python学习笔记二

    ---恢复内容开始--- 一. python几种数据类型的比较. 从以下几个方面比较: 1. 是否可变. 不可变类型:变量的值可以发生变化,id也变了,相当于创建了一个新的对象,所以一修改值,id就变 ...

  9. Python学习笔记(二)

    标识符和关键字 1,邮箱的Python标识符是任意长度的非空字符序列(引导字符+后续字符.) python标识符必须符合两条规则--标识符区分大小写 (1)只要是unicode编码字母都可以充当引导字 ...

  10. python学习笔记七——字典

    4.3 字典结构 字典是Python中重要的数据类型,字典的由“键-值”对组成的集合,字典中的“值”通过“键”来引用. 4.3.1 字典的创建 字典由一系列的“键-值”(key-value)对组成,“ ...

随机推荐

  1. python3+spark2.1+kafka0.8+sparkStreaming

    python代码: import time from pyspark import SparkContext from pyspark.streaming import StreamingContex ...

  2. URL与URI

    1.URI是统一资源标识符,是一个用于标识某一互联网资源名称的字符串. 该种标识允许用户对任何(包括本地和互联网)的资源通过特定的协议进行交互操作.URI由包括确定语法和相关协议的方案所定义.由是三个 ...

  3. hdu1331(记忆化搜索)

    #include<iostream> #include<stdio.h> #include<string.h> using namespace std; typed ...

  4. IBM MQ 2035 或 2013认证错误的解决方法

    第一种方法: ALTER CHL(SYSTEM.BKR.CONFIG) CHLTYPE(SVRCONN) ALTER CHL(SYSTEM.ADMIN.SVRCONN) CHLTYPE(SVRCONN ...

  5. JS学习笔记(3)--json格式数据的添加,删除及排序方法

    这篇文章主要介绍了json格式数据的添加,删除及排序方法,结合实例形式分析了针对一维数组与二维数组的json格式数据进行增加.删除与排序的实现技巧,需要的朋友可以参考下   本文实例讲述了json格式 ...

  6. /usr/bin/ld: cannot find -lc错误原因及解决方法

    问题解决 我在执行如下命令的时候,出现了错误. gcc -o main main.c -static -L. –lmylib Linux环境下gcc静态编译/usr/bin/ld: cannot fi ...

  7. Css三栏布局自适应实现几种方法

    Css三栏布局自适应实现几种方法 自适应实现方法我们可以从三个方法来做,一个是绝对定位 ,自身浮动法 和margin负值法了,下面我们一起来看看这三个例子吧,希望例子能帮助到各位同学. 绝对定位法三栏 ...

  8. JavaScript中的两个“0”(翻译)

    本文翻译自JavaScript’s two zeros JavaScript has two zeros: −0 and +0. This post explains why that is and ...

  9. 硬件设计之串口收发器---ISO1050 (现行) 隔离式 5V CAN 收发器

    http://www.ti.com.cn/product/cn/iso1050 http://www.deyisupport.com/question_answer/dsp_arm/sitara_ar ...

  10. 【BZOJ】1612: [Usaco2008 Jan]Cow Contest奶牛的比赛(floyd/dfs)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1612 赢+输==n-1 则一定确定 dfs和floyd都行(dfs我不确定,因为我没提交,权限还没开 ...