元组和字典

元组和字典

1.元组

1.元组
a.不可变的列表;
b.容器型数据类型,将()作为容器的标志,里面多个元素用逗号隔开;
(元素1, 元素2, 元素3, …)
c.元组不可变(不支持元素的增删改);元组是有序的(支持下标操作);
d.元素:任何类型的数据,并且可以重复;
e.注意:只有一个元素的元组,唯一元素的后面要加逗号;

t1 = (10,)
print(t1, type(t1))
# (10,) <class 'tuple'>

2.省略括号
在没有歧义的情况下,可以省略(),直接将多个元素用逗号隔开来表示一个元素;

t2 = 'abc', 10, 100, True
# ('abc', 10, 100, True) <class 'tuple'>
print(t2, type(t2))

3.获取元素
1)列表获取元素的方法元组都支持

letter = ('a', 'b', 'c', 'd')
print(letter[1:])
# ('b', 'c', 'd')

for x in letter:
    print('x:', x)
# x: a
# x: b
# x: c
# x: d

for index, item in enumerate(letter):
    print(index, item)
# 0 a
# 1 b
# 2 c
# 3 d

for index in range(len(letter)):
    print(letter[index])
# a
# b
# c
# d

2)让变量的个数等于元素的个数来获取元组中的所有的值

t3 = (10, 100, 1000)
x, y, z = t3
print(x, y, z)
# 10 100 1000

3)让变量的个数小于元组的个数来获取元组元素的时候,必须有且只有一个变量前有*

stu = ('小明', '男', 30, 89, 70, 170)
m1, m2, *m3 = stu
print('m1:', m1, 'm2:', m2, 'm3:', m3)
# m1: 小明 m2: 男 m3: [30, 89, 70, 170]

m1, *m2, m3 = stu
print('m1:', m1, 'm2:', m2, 'm3:', m3)
print(type(m2))
# m1: 小明 m2: ['男', 30, 89, 70] m3: 170
# <class 'list'>

4)元组相关操作
列表相关操作元组都支持
a.加法运算
b.乘法运算
c.比较运算
d.in和not in
e.相关函数sum、max、min、len、sorted(对元组排序结果为列表)
f.类型转换:tuple1=tuple(序列)
g.切片

2.字典

1.字典(dict) - 同时保存多个意义不同的数据就使用字典

a. 容器型数据类型,将{}作为容器的标志,里面多个元素用逗号隔开(元素必须是键值对)
{键1:值1, 键3:值3, 键3:值3, …}
键:必须是不可变的数据(数字、字符串、元组),一般使用字符串;键是用来对值进行描述和区分的,唯一的;
值:没有要求
b.字典是可变的(支持增删改)
c.字典是无序的(不支持下标操作)
d.字典不支持加法、乘法运算,也不支持比较大小

空字典

dict1 = {}
print(type(dict1))  # <class 'dict'>

键是唯一的

dict2 = {'name': '小饼干', 'age': 18, 'name': '小饼干'}
print(dict2)
# {'name': '小饼干', 'age': 18}

字典无序

print({'a': 10, 'b': 20} == {'b': 20, 'a': 10})  # True

2.字典的增删改查

1)查 - 获取值

a.字典[key] - 获取指定key对应的值
b.字典.get(key) - 获取指定key对应的值(key不存在会报错,返回None)
c.字典.get(key, 默认值) - 获取指定key对应的值(key不存在会报错,返回默认值)

dict3 = {'name': '小饼干', 'age': 18, 'high': 178}
print(dict3['name'])  # 小饼干
print(dict3.get('weight', '不存在'))  # 不存在

1.2)遍历

for 变量 in 字典:
pass

注意:变量取的是键

for key in dict3:
    print(key, dict3[key])
# name 小饼干
# age 18
# high 178

2)增、改

字典[key] = 值
a.当key存在时候,修改键值对
b.当key不存在时,添加键值对

dict4 = {'name': '张轩', 'age': 18, 'high': 155}
dict4['age'] = 24
print(dict4)  # {'name': '小饼干', 'age': 24, 'high': 178}
dict4['weight'] = 150
print(dict4)  # {'name': '张轩', 'age': 24, 'high': 155, 'weight': 150}

3)删

a.del 字典[key] - 删除指定key对应的键值对(会报错)
b.字典.pop(key) - 取出指定key对应的键值对

del dict4['high']
print(dict4)  # {'name': '张轩', 'age': 24, 'weight': 150}
dict4.pop('weight')
print(dict4)  # {'name': '张轩', 'age': 24}

3.字典的相关操作

1)in 和 not in
key in(或not in) 字典 - 判断字典中是否存在指定

d1 = {'a': 10, 'b': 12}
print('a' in d1)  # True

2)相关函数:len()、dict(数据)

a. len(字典) - 求字典的长度(当前字典键值对的数量)
b. dict(数据) - 将指定数据转换成字典
​ 数据的要求 :
​ 1.数据本身是序列
​ 2.序列中的每个元素必须是长度为2的小序列
​ 3.小序列中的第一个元素是不可变的数据

date = ['ab', (10, 20), ['abc', 123]]
print(dict(date))  # {'a': 'b', 10: 20, 'abc': 123}

d1 = {'a': 10, 'b': 20, 'c': 30}
print(list(d1))  # ['a', 'b', 'c']

3)相关方法

a. 字典.clear() - 清空字典
b. 字典.copy() - 复制字典产生一个一模一样的新字典并返回(产生一个地址不同的字典)
c. dict.fromkeys(序列) - 创建一个新的字典,键是序列中的每一个元素,值都是None
dict.fromkeys(序列, 值) - 创建一个新的字典,键是序列中的每一个元素,值都是指定的值

print(dict.fromkeys('abc'))
# {'a': None, 'b': None, 'c': None}
print(dict.fromkeys('abc', 100))
# {'a': 100, 'b': 100, 'c': 100}	

d. 字典.keys() - 获取字典所有的键(返回值是序列但不是列表)
字典.values() - 获取字典所有的值(返回值是序列但不是列表)
字典.items() - 同时获取字典所有的键和对应的值(返回值是序列但不是列表)

d1 = {'a': 10, 'b': 20, 'c': 30}
print(d1.keys())   # dict_keys(['a', 'b', 'c'])
print(d1.values())  # dict_values([10, 20, 30])
print(d1.items())  # dict_items([('a', 10), ('b', 20), ('c', 30)])

e. 字典.setdefault(键, 值) - 在字典中添加键值对(只添加不修改),如果键已经存在,就不做任何改动

d1 = {'a': 10, 'b': 20, 'c': 30}
d1.setdefault('age', 18)
print(d1)  # {'a': 10, 'b': 20, 'c': 30, 'age': 18}

f. 字典1.update(字典2) - 将字典2中所有的键值对添加到字典1中

d1 = {'a': 10, 'b': 20, 'c': 30}
d1.update(('mn', [10, 20]))
print(d1)
# {'a': 10, 'b': 20, 'c': 30, 'm': 'n', 10: 20}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值