ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python之字典

2019-05-16 20:49:34  阅读:279  来源: 互联网

标签:12 Python age lisi print zhangsan 字典


字典是无序的对象集合,使用键来存取索引,键必须是惟一的,值可以存取任何数据类型,但是键只能使用字符串、数字或元组,使用值来存取数据,通常用于存储描述一个物体的相关信息。

创建字典

name = {'zhangsan': 12,'lisi': 15,'boxiaoyuan': 22}
print(name) # {'lisi': 15, 'boxiaoyuan': 22, 'zhangsan': 12}

注:字典由多个键及对应的值组成,键和值使用冒号分割,字典中键的值必须唯一,而值不需要,另外,字典中的键必须是不可变的,如:字符串,元组和数字。、

访问字典

age={'zhangsan': 12,'lisi': 15,'boxiaoyuan': 22}
print('age:', age['zhangsan']) # age: 12

修改字典

age={'zhangsan': 12,'lisi': 15,'boxiaoyuan': 22}
age['zhangsan'] = 19 # 修改一个元素的值
age['bokeyuan'] = 33 # 添加一个元素的值
print(age) # {'zhangsan': 19, 'bokeyuan': 33, 'boxiaoyuan': 22, 'lisi': 15}

删除字典

删除字典可以删除对应的键值对,也可以删除整个字典。

age = {'zhangsan': 12, 'lisi': 15, 'boxiaoyuan': 22}
del age['zhangsan'] # {'lisi': 15, 'boxiaoyuan': 22},删除指定的键值对
print(age)
del age # 删除整个字典
print(age) # NameError: name 'age' is not defined

循环遍历

xiaoming = {"name": "xiaoming", "age": 18}
for key in xiaoming:
print("%s:%s" % (key, xiaoming[key]))

在实际开发中,由于字典中每一个键值对保存数据的类型是不同的,所以针对字典的循环遍历需求并不是很多。

字典常用的方法

# -*- coding:utf-8 -*-
import copy

age = {'zhangsan': 12, 'lisi': 15, 'boxiaoyuan': 22}
age.pop('boxiaoyuan')  # 移出列表中的元素
print(age)  # {'zhangsan': 12, 'lisi': 15}
print(age.get('lisi'))  # 15,获取列表中的元素
print(age.items())  # dict_items([('zhangsan', 12), ('lisi', 15)]),返回可遍历的元组数组
print(age.keys())  # dict_keys(['zhangsan', 'lisi']),返回字典的所有键
print(age.setdefault('wangwu'))  # None,根据指定键获取值,如果没有则在字典中新增加键并设置默认值None,如果存在值,则显示出来
print(age.setdefault('zhangsan'))  # 12
print(age)  # {'zhangsan': 12, 'wangwu': None, 'lisi': 15}

age2 = {'bokeyuan': 44}
age.update(age2)  # 用age2的值更新age的值
print(age)  # {'zhangsan': 12, 'wangwu': None, 'lisi': 15, 'bokeyuan': 44}

print(age.values())  # dict_values([12, None, 15, 44]),返回字典中所有值

D1 = {'name': 'zhangsan', 'method': ['run', 'eat', 'drink']}  # 原始数据
D2 = D1  # 直接引用,D1和D2指向同一对象
D3 = D1.copy()  # 浅拷贝,复制时只会复制父对象,不会复制对象内部的子对象
D4 = copy.deepcopy(D1)  # 深拷贝,复制父对象和子对象
D1['name'] = 'lisi'
D1['method'].remove('eat')
print('原始数据:',{'name': 'zhangsan', 'method': ['run', 'eat', 'drink']})
print('D1修改后数据:', D1)  # {'name': 'lisi', 'method': ['run', 'drink']}
print('D2数据:', D2)  # {'name': 'lisi', 'method': ['run', 'drink']}
print('浅拷贝数据:', D3)  # {'name': 'zhangsan', 'method': ['run', 'drink']}
print('深拷贝数据:', D4)  # {'name': 'zhangsan', 'method': ['run', 'eat', 'drink']}
#  可见,复制后对于原字典内部的子对象(方括号括起的元素)进行操作,浅拷贝字典会受到影响,深拷贝不会受到影响。
lists = [1, 2, 3, 4]
dicts = dict.fromkeys(lists)  # 创建一个新的字典,seq为字典的键,value为键对应的初始值,默认为None
print(dicts)  # {1: None, 2: None, 3: None, 4: None}
dicts = dict.fromkeys(lists, 10)
print(dicts)  # {1: 10, 2: 10, 3: 10, 4: 10}
print("zhangsan在字典中", 'zhangsan' in age)  # True,key in dict用来判断键是否在字典中,在的话,返回True,不在,返回False
age.clear()  # 清除字典中所有的值
print(age)  # {}

字典的其他说明

a)字典的格式化输出

age = {'zhangsan': 12,'lisi': 15,'boxiaoyuan': 22}
print('张三的年龄:%(zhangsan)s' % age) # 12

b)字典和列表的区别

字典的特点:查找和插入的速度非常快,但是需要占用大量内存,内存浪费较多。

列表的特点:查找和插入的速度随着元素的增加而减慢,占用空间小。

标签:12,Python,age,lisi,print,zhangsan,字典
来源: https://www.cnblogs.com/zhuzhaoli/p/10855925.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有