欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

元组与字典

程序员文章站 2022-04-02 11:11:39
文章目录1. 元组快速入门1.1 元组的创建1.2 元组的取值1.3 元组的另类形式,一个逗号1.4 元组解包2. 可变对象2.1 两种修改对象的方式2.2 改变值不一定改变对象2.3 对象改变了值也可能相同2.4 举例练习3. 字典3.1 创建一个字典3.2 字典的使用1. 元组快速入门元组是不可变序列当希望这个数据不改变的时候用元组,其余情况用列表。1.1 元组的创建tup=()print(tup,type(tup))用()可以创建一个空元组。1.2 元组的取值tup=(1,2...

1. 元组快速入门

  • 元组是不可变序列
  • 当希望这个数据不改变的时候用元组,其余情况用列表。

1.1 元组的创建

tup=()
print(tup,type(tup))

用()可以创建一个空元组。
元组与字典

1.2 元组的取值

tup=(1,2,3,4,5,6,7)
print(tup[0])

元组与字典
元组的取值方法跟列表相同,不同的是元组不能被修改,如果按照列表的方法修改则会报错,如:

tup=(1,2,3,4,5,6,7)
tup[0]=8
print(tup)

元组与字典
报错显示,元组对象不支持元素赋值。

1.3 元组的另类形式,一个逗号

元组可以加括号,也可以不加括号,元组的元素用逗号隔开就行,元组如果不是空的,至少有一个逗号。

tub=10,
print(tub,type(tub))

元组与字典

tub='王朝','马汉','张龙','赵虎'
print(tub)

元组与字典

1.4 元组解包

可以把元组里的元素赋值给指定的变量。

tub=10,20,30,40
a,b,c,d=tub
print('a=',a)
print('b=',b)
print('c=',c)
print('d=',d)

元组与字典
像这样把元组中的每一个元素赋值给一个变量,叫着元组的解包
注意:

  • 解包时元素的数目和接收元素的变量的数目要保持一致,否则会报错
  • 如果遇到解包时接收元组元素的变量不够,需要以列表的方式将多个元素赋值给其中一个变量,则将该变量前加*即可。
  • 元素的个数少于变量的个数则会报错
    元组与字典
tub=10,20,30,40
a,b,*c=tub
print('a=',a)
print('b=',b)
print('c=',c)

元组与字典
换个变量接收多元素

tub=10,20,30,40
a,*b,c=tub
print('a=',a)
print('b=',b)
print('c=',c)

元组与字典
再换个变量接收多元素

tub=10,20,30,40
*a,b,c=tub
print('a=',a)
print('b=',b)
print('c=',c)

元组与字典
其中的规律大家应该自己已经看明白了,我就不总结了。

2. 可变对象

可变序列属于可变对象的一种。一个对象包括了这三个东西:

  • id 标识
  • type 类型
  • value 值

2.1 两种修改对象的方式

这里有一个列表

a=[1,2,3,4,5,6]

现在有两种改变这个对象的方法:

a=[1,2,3,4,5,6]
a[0]=10
print(a)
print(id(a))

元组与字典
这种方法是改变了变量的值,但是没有改变变量所指向的对象

a=[1,2,3,4,5,6]
a=[7,8,9,10,11]
print(a)
print(id(a))

元组与字典

这种方法是对变量重新赋值了,改变了变量指向的对象

2.2 改变值不一定改变对象

再看一个例子

a=[1,2,3]
b=a
print('a=',a,id(a))
b[0]=10
print('a=',a,id(a))
print('b=',b,id(b))

元组与字典

当我们修改了一个变量的值,如果有其他变量也指向这个对象,则这个变量的值也改变,但对象却是一个对象。

2.3 对象改变了值也可能相同

再看一个例子:

a=[1,2,3]
b=a
print('a=',a,id(a))
b[0]=10
print('a=',a,id(a))
print('b=',b,id(b))
b=[10,2,3]
print('b=',b,id(b))

元组与字典

这次是重新赋值,对象改变了。
所以,关于可变对象,对象和值的关系,通过这些例子,相信你心中有数了。

2.4 举例练习

例题:

a=[1,2,3]
b=[1,2,3]
print(a==b)
print(a is b)
print('a',id(a))
print('b',id(b))

结果
元组与字典

3. 字典

字典是一种方便查找的数据存储方式;是一种新的数据结构,称之为映射

  • 字典和列表一样,都是存储数据的形式
  • 列表存储数据方便,但是查询数据没有字典方便
  • 字典每个元素都有一对键值对组成,可以快捷的通过键来查询对应的值(key-value)结构
  • 每个键值对,我们成为一项(item)

3.1 创建一个字典

a={'name':'葫芦娃','sex':'男','age':10}
print(a['name'],a['sex'],a['age'])

结果
元组与字典
可以很方便的取出我们要的结果值
注意:

  • 字典的键最好不用重复,如果重复,后面的值会取代前面相同键的值
  • 字典里项如果比较多,为了方便查看也可以实现竖向排列
a = {
    'name': '葫芦娃',
    'sex': '男',
    'age': 10
}

# 可以用快捷键ctrl+shift+alt+L自动调整代码格式(也可以点击上方菜单里的code>reformat code)如下图:

元组与字典

3.2 字典的使用

3.2.1 官方文档查看

元组与字典

3.2.2 用dict()函数来创建字典
d=dict(name='葫芦娃',sex='男',age='10')
print(d,type(d))

结果
元组与字典

3.2.3 dict()将包含有双值子序列的序列转换成字典

双值序列 指有两个值的序列,如:‘gk’, (‘w’,1), [4,5]
子序列 序列中的元素也是个序列。如:[(‘w’,1), [4,5],(1,2)]

d=dict([('name','葫芦娃'),('age',10)])
print(d)

结果

元组与字典

3.2.4 通过字典的键来获取字典的元素

语法:
d[key]
key值一定要加上引号,不然会当作变量来处理

d=dict([('name','葫芦娃'),('age',10)])
print(d['age'])

结果
元组与字典
或者可以这样

d=dict([('name','葫芦娃'),('age',10)])
n='age'
print(d[n])

元组与字典
结果一样,但如果直接这样:

d=dict([('name','葫芦娃'),('age',10)])
print(d[age])

就会报错
元组与字典

3.2.5 get()函数获取字典里的值
d=dict([('name','葫芦娃'),('age',10)])
print(d.get('name'))

结果

元组与字典

假如没有这个键,也不会报错,而是会返回一个None值。

d=dict([('name','葫芦娃'),('age',10)])
print(d.get('name1'))

结果
元组与字典

3.2.6 get(key,[default])函数获取字典中的值

default也可以指定一个默认值来作为第二个参数,如果这个键存在则返回对应的值,如果取不到这个key则返回默认值

d=dict([('name','葫芦娃'),('age',10)])
print(d.get('name1','这个键不存在'))

结果
元组与字典

3.2.7 修改字典

语法格式

d=dict([('name','葫芦娃'),('age',10)])
d['name']='钢铁侠'

元组与字典
通过

字典名['新键']='新值'

的格式可以添加键值对

d=dict([('name','葫芦娃'),('age',10)])
d['name1']='孙悟空'
print(d)

结果
元组与字典

可以看到,再原来字典的基础上又添加了键值对。
如果这个键和里面的键重复,则直接覆盖原来的值。

d=dict([('name','葫芦娃'),('age',10),('name1','孙悟空')])
print(d)
d['name1']='猪八戒'
print(d)

结果
元组与字典

可以看到原来’name1’的值’孙悟空’已经被新的值’猪八戒’覆盖了。

3.2.8 d.setdefault()向字典中添加键值对
  • 这种方法,如果新添加的key值已经存在,则返回key值,不对字典做任何的修改
  • 如果新添加的key值不存在,则对字典添加新的键值对
d=dict([('name','葫芦娃'),('age',10)])
d.setdefault('name','金刚侠')
print(d)
d.setdefault('name2','沙和尚')
print(d)

结果
元组与字典

3.2.9 update()方法

update()将其他字典的键值添加到当前字典中

d=dict([('name','葫芦娃'),('age',10)])
d2={'name3':'孙悟空','name4':'猪八戒','name5':'沙和尚'}
d.update(d2)
print(d)
print(d2)

元组与字典
如果要有重复的key将被后面的覆盖。

3.2.10 删除键值对
3.2.10.1 用del删除
d={'name': '葫芦娃', 'age': 10, 'name3': '孙悟空', 'name4': '猪八戒', 'name5': '沙和尚'}
del d['name']
del d['age']
print(d)

结果
元组与字典

3.2.10.2 popitem()方法随机删除字典中的一个元素

默认删除字典中最后的一个元素
语法格式

d={'name': '葫芦娃', 'age': 10, 'name3': '孙悟空', 'name4': '猪八戒', 'name5': '沙和尚'}
d.popitem()
print(d)
d.popitem()
print(d)

元组与字典
popitem()会把删除的元素当作返回值

d={'name': '葫芦娃', 'age': 10, 'name3': '孙悟空', 'name4': '猪八戒', 'name5': '沙和尚'}
r=d.popitem()
print(d)
print(r)

元组与字典

3.2.10.3 pop()根据指定的key来删除元素

pop()删除元素也又返回值,返回的是删除的元素的value

d={'name': '葫芦娃', 'age': 10, 'name3': '孙悟空', 'name4': '猪八戒', 'name5': '沙和尚'}
r=d.pop('name3')
print(d)
print(r)

结果

元组与字典
如果要删除的指定key在原来的字典里不存在则会报错

d={'name': '葫芦娃', 'age': 10, 'name3': '孙悟空', 'name4': '猪八戒', 'name5': '沙和尚'}
r=d.pop('name6')
print(d)
print(r)

结果
元组与字典
当然可以传入第二个参数,避免报错,即pop(key,[default])

d={'name': '葫芦娃', 'age': 10, 'name3': '孙悟空', 'name4': '猪八戒', 'name5': '沙和尚'}
r=d.pop('name6','这个key不存在')
print(d)
print(r)

结果
元组与字典

3.2.11 clear()清空字典

语法结构

d.clear()

例如

d={'name': '葫芦娃', 'age': 10, 'name3': '孙悟空', 'name4': '猪八戒', 'name5': '沙和尚'}
d.clear()
print(d)

元组与字典

4. 作业

4.1 写博客梳理本节内容

4.2 课堂代码敲三遍

4.3 课堂作业

4.3.1 字典练习,找指定的值

在字典a = {“name”:“123”,“data”:{“result”:[{“src”:“python1”},{“src”:“python2”},
{“src”:“python3”}]}} 找到python1/python2/python3

答案

a = {"name":"123","data":{"result":[{"src":"python1"},{"src":"python2"},{"src":"python3"}]}}
v_1=a['data']['result'][0]['src']
v_2=a['data']['result'][1]['src']
v_3=a['data']['result'][2]['src']
print(v_1)
print(v_2)
print(v_3)

结果
元组与字典

4.3.2 字典练习,创建字典

有如下值列表[11,22,33,44,55,66,77,88,99,90], 将所有大于66的值保存至字典的第一个key
中,将小于66值保存至第二个key的值中

答案

a=[11,22,33,44,55,66,77,88,99,90]
lst_1=[]
lst_2=[]
for i in a:
    if int(i)>66:
        lst_1.append(i)
    elif:
    	if int(i)<6:
        lst_2.append(i)
num=dict(num_1=lst_1,num_2=lst_2)
print(num)

结果
元组与字典

本文地址:https://blog.csdn.net/m0_46738467/article/details/109597411

相关标签: python基础语法