1、元组Tuple与列表类似,不同之处在于元组的元素不能修改。

元组使用小括号,列表使用中括号。
元组可以查询,可以使用内置函数count、index。但是不能修改、增加、删除(儿子不能,孙子有可能)。
name = ('a','a','b')
print(name.count('a'))
2
可以索引,可以切片(步长)。
name = ('a','a','b')
print(name[2])
b

2、字典:
使用大括号来表示字典,前面是元素的名字,后面是元素的值(可以是字符,也可以是数字或其他任意类型),中间用冒号隔开。

info = {'name':'xiaowang','sex':'f','address':'中国北京'}
print(info)
{'name': 'xiaowang', 'sex': 'f', 'address': '中国北京'}

字典的查询效率比列表快,因为字典首先将key值进行hash并进行排序,当查询字典时只需查询key的hash值,而不需要从头进行循环,由于hash值进行了有序排序所以查询快
而列表不能对元素建立一个索引,所以只能从头循环查找

字典常见操作一:
2.1 按key值查询元素的值
>>> info['name']
'xiaowang'

2.2、get()查询
查询时,如果查询一个字典中不存在的元素,则程序会报错。为了不报错,可以使用get方法来查询字典
a.get('age') //不会返回任何值
a.get('age',0) //会将age的默认值设置为0,但是不会将默认值添加到字典中。
a.get('name','ddd') //会返回name的值abc,如果查询到了元素的值,则不会修改元素的值。

2.3、修改元素的值
>>> info['name'] = 'xiaozhang'
>>> info
{'name': 'xiaozhang', 'sex': 'f', 'address': '中国北京'}

2.4、添加元素的值
>>> info['high']= '170cm'

2.5、dict.setdefault(key, default)
许多时候我们需要往字典中的元素添加数据,我们首先要判断这个元素是否存在,不存在则创建一个默认值,存在则不变动。我们可以使用 dict.setdefault(key, default) 。
info.setdefault('sex','m')
print(info)
{'name': 'xiaowang', 'sex': 'f', 'address': '中国北京'}

2.6、删除元素的值,有del和clear、pop三种方法
>>> del info['high'] 删除high元素的值
>>> del info 删除整个info字典,如果del了整个字典后,再想在info中添加元素,则需要重新定义info字典。
>>> info.clear() 清空字典中所有元素的值,但是字典本身还在,只是成为了一个空字典
>>> info
>>> {}

pop(key) 函数,可以返回 key 对应的 value,并将该 key:value 键值对删除:

用pop()删除时可以指定字符串,如果要删除的key不存在时,则返回指定字符串,而不会报错
print(user.pop('tel','111'))
111
{'name': 'xiaozhang', 'sex': 'f', 'address': '中国北京'}

#popitem()会随机删除字典中的键值对
user.popitem()

2.7、创建字典
同 set 一样,字典也可以使用 dict 函数进行创建,参数是一个包含若干个二元组的元组(注意括号的数量):
dic = dict(((1,'Linux'), (2,'Vim')))
print(dic)
{1: 'Linux', 2: 'Vim'}

2.8、len()
测量字典中键值的个数
>>>dict = {'name':'zhangsan','sex':'m'}
>>>len(dict)
2

2.9、keys
返回一个包含字典所有key的列表
>>>dict = {'name':'zhangsan','sex':'m'}
>>>dict.keys()
dict_keys(['name','sex'])

>>>for i in dict.keys():
print(i)

2.10、values
返回一个包含字典中所有值的列表
>>>dict = {'name':'zhangsan','sex':'m'}
>>>dict.values()
dict_values(['zhangsan','m'])

>>>for i in dict.values():
print(i)

2.11、items
返回一个包含所有(键、值)元组的列表
>>> info.items()
dict_items([('name', 'xiaowang'), ('sex', 'f'), ('address', '中国北京')])

for i,j in temp:
    print('key:%s,value:%s'%(i,j))

key:name,value:xiaowang
key:sex,value:f
key:address,value:中国北京

user = {'name': 'xiaozhang', 'sex': 'f', 'address': '中国北京'}
print(list(user.keys()))
print(list(user.values()))
print(list(user.items()))

['name', 'sex', 'address']
['xiaozhang', 'f', '中国北京']
[('name', 'xiaozhang'), ('sex', 'f'), ('address', '中国北京')]

#获取字典的key和value有以下两种方法,建议用第一种方法效率高,因为第二种方法是先将字典转换成一个列表,再输出
user = {'name': 'xiaozhang', 'sex': 'f', 'address': '中国北京'}
for key in user:
print(key,user[key])

for k,v in user.items():
print(k,v)

2.12、has_key(在python2中有,3中没有这个方法,3中使用get()方法)
如果key在字典中,返回True,否则返回False
>>>dict = {'name':'zhangsan','sex':'m'}
>>>dict.has_key('name')
True
>>>dict.has_key('phone')
False

2.13、type(info)
可以查看info的类型是字典
<class 'dict'>

2.14、help(info)
可以查看info字典可以用的方法,info是字典的名字。

2.15、dict.fromkeys() 生成一个字典,用列表中的每一个元素作为一个key,可以指定value的默认值,如果不指定则value为None
user = ['tom','Jack','mike']
dict_user1 = dict.fromkeys(user,1)
print(dict_user1)
{'tom': 1, 'Jack': 1, 'mike': 1}

也可以将value指定成一个列表
user = ['tom','Jack','mike']
dict_user1 = dict.fromkeys(user,[1,2,3])
print(dict_user1)
{'tom': [1, 2, 3], 'Jack': [1, 2, 3], 'mike': [1, 2, 3]}

但是如果更改了任意一个value列表中的某个值,则所有value的值都会跟着更改

dict_user1['mike'][0]=0
print(dict_user1)
#{'tom': [0, 2, 3], 'Jack': [0, 2, 3], 'mike': [0, 2, 3]}

2.16、update()将两个字典进行合并
dict_1 = {'a':1,'b':2}
dict_2 = {'c':3,'d':4}
dict_1.update(dict_2)
print(dict_1)

#{'a': 1, 'b': 2, 'c': 3, 'd': 4}

2.17、copy()  浅copy
第2个字典copy第1个字典,修改字典中的值时,如果元素是不可变数据类型,则另一个字典不会随着改,如果元素是可变数据类型(列表、字典),则另一个字典也会随着改变。2个字典的id是不一样的,但是字典内元素的id是一样的,所以如果元素是列表或字典,当更改列表或字典内的值时,2个变量都是改变。

card_1 = {'name':'tom','acc':{'id':111,'balance':1000}}
card_2 = card_1.copy()
card_2['name'] = "tom's wife"
print(card_1)
print(card_2)
card_1['acc']['balance']-=100
print(card_1)
print(card_2)

{'name': 'tom', 'acc': {'id': 111, 'balance': 1000}}
{'name': "tom's wife", 'acc': {'id': 111, 'balance': 1000}}
{'name': 'tom', 'acc': {'id': 111, 'balance': 900}}
{'name': "tom's wife", 'acc': {'id': 111, 'balance': 900}}

2.18、copy.deepcopy(x)  深copy
#修改字典中的值时,其他字典不会随着改变,深copy是形成了两个完全独立的变量,变量id和变量内元素的id,以及可变元素内层的元素id都是不一样的
card_1 = {'name':'tom','acc':{'id':111,'balance':1000}}
card_2 = card_1.copy()
card_2['name'] = "tom's wife"
import copy
card_3 = copy.deepcopy(card_1)
card_3['name'] = 'mike'
print(card_1)
print(card_2)
print(card_3)
card_1['acc']['balance']-=100
print(card_1)
print(card_2)
print(card_3)

{'name': 'tom', 'acc': {'id': 111, 'balance': 1000}}
{'name': "tom's wife", 'acc': {'id': 111, 'balance': 1000}}
{'name': 'mike', 'acc': {'id': 111, 'balance': 1000}}
{'name': 'tom', 'acc': {'id': 111, 'balance': 900}}
{'name': "tom's wife", 'acc': {'id': 111, 'balance': 900}}
{'name': 'mike', 'acc': {'id': 111, 'balance': 1000}}

2.19、排序

d = {'Tom':20, 'Jack':22, 'Mike':28, 'Rose':30}
print(sorted(d.keys())) #将key值进行排序
['Jack', 'Mike', 'Rose', 'Tom']

print(sorted(d.values()))#将value值进行排序
[20, 22, 28, 30]

print(sorted(d.items()))#按key值对键值对进行排序
[('Jack', 22), ('Mike', 28), ('Rose', 30), ('Tom', 20)]

print(sorted(d.items(),key=lambda i:i[1])) #按value值对键值对进行排序
[('Tom', 20), ('Jack', 22), ('Mike', 28), ('Rose', 30)]

-----------------------------------------------------
例子:
将字典中的key键含有'k'元素的所有键值对删除。
由于在循环一个字典时,不能改变该字典的大小,所以不能直接在for循环的时候直接删除字典中的键值对,只能将需要删除的key先保存在一个列表中,再循环这个列表去删除字典中的键值对。

dic = {'k1':'v1','k2':'v2','k3':'v3','name': 'alex'}
L1 = []
for key in dic:if 'k' in key:L1.append(key)
for key in L1:del dic[key]
print(dic)

结果:{'name': 'alex'}

转载于:https://www.cnblogs.com/dxnui119/p/9830643.html

day11-元组与字典相关推荐

  1. Python菜鸟入门:day06元组与字典

    写在前面: 此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 传送门: day01基础知识 day02知识分类 day03 ...

  2. python基础---元组、字典、函数、文件、异常

    文章目录 python基础---元组.字典.函数.文件.异常 Tuple(元组) 常用操作 dict(字典) 函数 文件 异常 python基础-元组.字典.函数.文件.异常 Tuple(元组) tu ...

  3. python元组转字典_python中怎么将元组、字典转化为列表

    python中将元组.字典转化为列表的方法: python中可以使用list()方法将元组或字典转化为列表: list()方法语法:list( tup ) 参数 tup -- 要转换为列表的元组. 返 ...

  4. Python基础学习!容器:列表,元组,字典与集合!(2)

    本文是元组 字典与集合的学习笔记! 真滴好多! 在许多地方都可以用元组代替列表,但是元组的方法函数与列表相比要少. 像,append(),insert()这些函数,元组都没有.因为,创建元组就无法修改 ...

  5. python内置函数可以返回列表元组_Python内置函数()可以返回列表、元组、字典、集合、字符串以及range对象中元素个数....

    Python内置函数()可以返回列表.元组.字典.集合.字符串以及range对象中元素个数. 青岛远洋运输有限公司冷聚吉船长被评为全国十佳海员.()A:错B:对 有源逆变是将直流电逆变成其它频率的交流 ...

  6. python3 列表倒叙_python的列表、元组、字典、集合

    本文首发于我的博客 徐小晋的博客 | Xu Xiao Jin​jiayouxujin.github.io python的列表.元组.字典.集合​jiayouxujin.github.io 前言 本文对 ...

  7. 附加 集合数据_最全的实例详解:Python字符串、列表、元组、字典、集合的补充...

    本文内容主要介绍了Python字符串.列表.元组.字典.集合,结合实例形式详细分析了Python字符串.列表.元组.字典.集合常见函数使用方法及相关操作注意事项,需要的朋友可以参考下!!! 附加: p ...

  8. python基础语法合集-Python基础语法(四)—列表、元组、字典、集合、字符串

    列表 基本概念列表是有序的元素集合,所有元素放在一对中括号中,用逗号隔开,没有长度限制: 列表索引值以0为开始值,-1为从未尾的开始位置. 列表可以使用+操作符进行拼接,使用*表示重复. 当列表元素增 ...

  9. python字典内存分析_python--序列,字符串,列表,元组,字典,集合内存分析

    一,什么是序列. 序列是一种数据存储方式,用来存储一系列的数据,在内存(堆内存)中,序列是一块用来存放多个值的连续的内存空间,其存储的值为所指向对象的地址.比如说a = [ 10 , 20 , 30 ...

  10. python列表、元组、字典和集合的算法时间_27.Python列表(list)、元组(tuple)、字典(dict)和集合(set)详解...

    本章将会介绍 Python 内置的四种常用数据结构:列表(list).元组(tuple).字典(dict)以及集合(set). 这四种数据结构一但都可用于保存多个数据项,这对于编程而言是非常重要的,因 ...

最新文章

  1. HttpHand和HttpModule的详细解释,包括Asp.Net对Http请求的处理流程。
  2. Nginx主配置文件nginx.conf详细说明
  3. 面试心得与总结—BAT、网易、蘑菇街
  4. 大数据职业理解_到底什么是大数据,大数据职业的具体工作内容是什么?
  5. SQL——快速定位相关的外键表
  6. jeecg-framework-3.3.2-RELEASE 最新版本发布
  7. oracle linux hugepage,LInux下为什么配置HugePages及配置步骤
  8. git error: RPC failed; curl 56 GnuTLS recv error 解决方案
  9. c语言实现《学生管理系统》
  10. Android中ail的作用和使用说明
  11. 微信公众平台消息接口开发 小黄鸡(小贱鸡)机器人 微信公众平台 公众号聊天机器人 ,消息,接口,小黄鸡,小贱鸡,机器人...
  12. Java源码——一个简单的洗牌(shuffling)程序 (Card shuffling and dealing with Collections method shuffle)
  13. 区块链Oracle预言机实现教程【含代码】
  14. UE4 EQS C++自定义节点编写
  15. 登录系统提示请求数据成功!但回调方法出错;请检查自定义load回调函数。有没有大佬能给解答下这种怎么处理
  16. Python实现各种加密,接口加解密不说难
  17. 【 FPGA 】超声波测距小实验(四):数码管显示测距结果
  18. 智能合约部署Error: exceeds block gas limit undefined
  19. 基本共射放大电路的动态分析(低频、Ri、Ro大小对电路影响的分析)
  20. U盘文件被病毒破坏的常见迹象和数据恢复方法

热门文章

  1. 【Ubuntu-opencv3.4.0-Error】对‘cv::Mat::updateContinuityFlag()’未定义的引用
  2. TensorFlow:实战Google深度学习框架(六)图像数据处理
  3. 分类算法——K近邻算法及其R实现
  4. 使用miniSIPServer搭建pjsip服务器
  5. memcache、Redis与MongoDB的学习-1
  6. 第一张信用卡,该选哪家的?
  7. 保护Eclipse RCP应用的商业Java编译器
  8. priority case语句
  9. Java字节码反编译工具
  10. 服务器系统怎么调节风扇速度,服务器主板怎样设置风扇速度