学习python数据类型 — 字典

一、学习python数据类型 — 字典

1、字典
  • 定义:{key1:value1,key2:value2}
    1、键与值用冒号“:”分开;
    2、项与项用逗号“,”分开;

  • 示例:

shtdent = {
    "name":"小花",
    "age": 18,
    "grade": "六年级"
}
  • 字典的特点:
    1、 key-value结构
    2、key必须为不可变数据类型、必须唯一
    3、可存放任意多个value、可修改、可以不唯一
    4、无序
    5、查询速度快,且不受dict的大小影响,至于为何快?我们学完hash再解释。
1.1、字典的创建方式,可参考如下方式:
##### 方式一  #####
In [216]: students = {"name":"小花","age":22,"grade":"初二","score":88}
In [217]: students
Out[217]: {'name': '小花', 'age': 22, 'grade': '初二', 'score': 88}

##### 方式二  #####
In [218]: teachers = dict(name = "小小", course = "语文")
In [219]: teachers
Out[219]: {'name': '小小', 'course': '语文'}

##### 方式三  #####
In [221]: school =dict({"name":"jialidun","age":120})
In [222]: school
Out[222]: {'name': 'jialidun', 'age': 120}

##### 方式四  #####
In [223]: {}.fromkeys([1,2,3,4,5,6,7,8],100)
Out[223]: {1: 100, 2: 100, 3: 100, 4: 100, 5: 100, 6: 100, 7: 100, 8: 100}
1.2、字典的常用方法,如:增加、删除、修改、查询、遍历等
1.2.1、给字典增加一个元素,示例如下:
In [218]: teachers = dict(name = "小小", course = "语文")
In [219]: teachers
Out[219]: {'name': '小小', 'course': '语文'}

In [224]: students["telephone"] = "18829528899"					# 增加一个元素
In [225]: students
Out[225]: 
{'name': '小花',
 'age': 22,
 'grade': '初二',
 'score': 88,
 'telephone': '18829528899'}
1.2.2、查询字典中的一个元素,示例如下:

1、直接通过key值查找元素,

####### 方式一 直接通过key值查找元素  ########
In [233]: students
Out[233]: 
{'name': '小花',
 'age': 22,
 'grade': '初二',
 'score': 88,
 'telephone': '18829528899'}

In [234]: students["name"]
Out[234]: '小花'

In [235]: students["age"]
Out[235]: 22

In [236]: students["name1"]					# 查找一个不存在的键,会报错
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-236-dcf00c2e6139> in <module>
----> 1 students["name1"]

KeyError: 'name1'

2、通过get()方法查询元素,示例如下:

  • dic.get(key, default = None)#返回字典中key对应的值,若key不存在字典中,则返回default的值(default默认为None)
    ❗️⚠️❗️get() 方法不会改变字典的长度。
####### 方式二 通过get()方法查询元素  ########
In [285]: students.get('name')
Out[285]: '小草'

In [282]: teachers
Out[282]: {'age': '18'}

In [283]: teachers.get('age')
Out[283]: '18'

3、通过in关键字查询元素,示例如下:

####### 方式三 通过in关键字查询元素  ########

In [288]: 'age' in students
Out[288]: True
In [287]: age in students							# 查询一个不在这个元组中的数据,会发生报错
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-287-70e39602ecbf> in <module>
----> 1 age in students

NameError: name 'age' is not defined
######## 使用not in 关键字,起到与in相反发的作用
In [289]: name not in students
Out[289]: True

4、通过dic.keys() 可以查询到一个字典中的所有key值,返回一个包含字典所有KEY的列表,示例如下:

In [286]: students
Out[286]: 
{'name': '小草',
 'age': 22,
 'grade': '初二',
 'score': 88,
 'telephone': '18829528899',
 'address': 'china'}
 
In [290]: students.keys()
Out[290]: dict_keys(['name', 'age', 'grade', 'score', 'telephone', 'address'])

5、通过dic.values() 可以查询一个字典所有的values值,返回一个包含字典所有value的列表,示例如下:

In [286]: students
Out[286]: 
{'name': '小草',
 'age': 22,
 'grade': '初二',
 'score': 88,
 'telephone': '18829528899',
 'address': 'china'}
 
In [291]: students.values()
Out[291]: dict_values(['小草', 22, '初二', 88, '18829528899', 'china'])

6、通过dic.items() 可以查询到一个字典的key和value,返回一个包含所有(键,值)元组的列表,示例如下:

In [292]: students.items()
Out[292]: dict_items([('name', '小草'), ('age', 22), ('grade', '初二'), ('score', 88), ('telephone', '18829528899'), ('address', 'china')])
1.2.3、修改字典中的一个元素,示例如下:

1、使用下标直接进行dic[‘key’] = ‘new_value’,如果key在字典中存在,'new_value’将会替代原来的value值;如果不存在,则会报错。

In [263]: students['name'] = "小草"				# 修改一个存在的值

In [264]: students
Out[264]: 
{'name': '小草',
 'age': 22,
 'grade': '初二',
 'score': 88,
 'telephone': '18829528899',
 'address': 'china'}

In [265]: students["KK"]						# 修改一个在student中不存在的key值,会发生报错
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-265-685ca2e6d181> in <module>
----> 1 students["KK"]
KeyError: 'KK'

2、dic.update(dic2) 将字典dic2的键值对添加到字典dic中,执行这行程序后

  • 如果两个字典中都有相同的key值,dic2会覆盖dic的值
  • 如果dic2中有,dic中没有的值,会将dic2的值填入dic中,如下:
n [266]: teachers
Out[266]: {'name': '小小', 'course': '语文'}

In [267]: students
Out[267]: 
{'name': '小草',
 'age': 22,
 'grade': '初二',
 'score': 88,
 'telephone': '18829528899',
 'address': 'china'}

In [268]: teachers.update(students)

In [269]: teachers
Out[269]: 
{'name': '小草',
 'course': '语文',
 'age': 22,
 'grade': '初二',
 'score': 88,
 'telephone': '18829528899',
 'address': 'china'}
1.2.4、删除字典中的一个元素,示例如下:
 names.pop("alex") # 删除指定key
names.popitem()   # 随便删除1个key
del names["oldboy"] # 删除指定key,同pop方法
names.clear()     # 清空dict
1.2.5、循环字典,示例如下:

1、使用for k in dic.keys()循环,如下所示:


例如:
In [329]: for k in students.keys():
     ...:     print(k)
     ...: 
name
age
grade
score
telephone
address

In [330]: for k in students.keys():
     ...:     print(students[k])
     ...: 
小草
22
初二
88
18829528899
china

2、使用for k,v in dic.items() 进行遍历,如下所示:

In [332]: for k,v in students.items():
     ...:     print(k,v)
     ...: 
name 小草
age 22
grade 初二
score 88
telephone 18829528899
address china

3、通过for k in dic # 推荐用这种,效率速度最快,如下所示:

info = {
    "name":"小猿圈",
    "mission": "帮一千万极客高效学编程",
    "website": "http://apeland.com"
}
for k in info:
    print(k,info[k])
输出
name 小猿圈
mission 帮一千万极客高效学编程
website http://apeland.com
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值