Python-元祖-字典

元祖 tuple

元祖是不可改变的序列,同list一样,元祖可以存放任意类型的元素

元祖和列表一样内、可以放任意类型的元素

表示方法:

用()小括号括起来,每个元素括起来之后加逗号(,)

区分单个对象还是元祖

创建空元祖的字面值

t=()

创建非空元祖的字面值

t=200,

t=(20,)

t=(1,2,3)

t=100,200,300

type(x) 用来返回x的类型

错误示例:

t=(20)

x,y,z=100,200,300 序列赋值

x,y,z=(100,200,300) 序列赋值

x,y,z=[100,200,300] 序列赋值

x,y,z=“asd” 序列赋值

元祖的构造(创建)函数

tuple() 生成一个空元祖,等于()

tuple(iterable) 用可迭代对象生成一个元祖 tuple(“hello”)

t=tuple([1,2,3,4])

t=tuple((1,2,3,4))

元祖的运算

算术运算:

, + += * *=

比较运算

< <= > >= == !=

in / not in 运算

索引和切片

元祖的索引和切片等同于列表的索引和切片

元祖的切片返回一个元祖

元祖不能索引赋值和切片赋值、

T.count(value) 返回元素个数同list.count

T.index(value,[strat,[stop]])

返回元素在元祖索引的位置(同list.index)

思考:

元祖里能否存入列表?即:

t=(1,2,3,4,[3.1,3.14])

字典:dict

  1. 字典是一种可变容器,可以存储任意类型的数据

  2. 字典中的每个数据都是用键(key)进行索引

  3. 字典的顺序没有前后顺序关系,字典的顺序是无序的

  4. 字典的数据以键(key)-值(value)对进行映射存储

  5. 字典的键不能重复,且只能用不可变类型作为字典的键

    字典的字面值表示方式:

    用{}括起来,以冒号(:)分割建—值对,各键值对用分号分隔开

    创建空字典

    d={}

    创建非空字典:

    d={“name”:“tarena”,“age”:“15”} -----有两个元素

    d={“姓名”:“小张”}

    d={1:“壹”,2:“贰”}

    一切不可变类型都能作为字典的键

    d={(1,2,3):“1qwesdfGD”} -----------可以,元祖是不可变类型可以用来做为键

    d={[1,2,3]:“wefeg”} --------不可以!!! 列表是可变类型不可以用来做键

    d={“a”:{1:“dfd”,2:“we”}} 任意容器类可以自由组合

    字典的构造函数

    dict()创建一个空字典

    dict(iterable)用可迭代兑现初始化字典

    dict(**kwargs)关键字传参形式生成一个字典

    示例:

    d=dict()

    d=dict([(“name”,“tarena”),(“age”,15)]) ---------{‘name’: ‘tarena’, ‘age’: 15} 列表可迭代

    d=dict(name=“tarena”,age=15)

    d=dict((“as”,“df”)) --------{‘d’: ‘f’, ‘a’: ‘s’}

    不可变类型:

    int float complex bool str tuple frozenset(固定集合) bytes(字节串)

    可变类型:

    list dict set bytearray(字节数组)

    字典的基本操作

    用[ ]运算符可以获取字典内“键”所对应的“值”,用键来寻找值

    语法:

    ​ 字典[键]

    获取数据元素

    d=dict(name=“tarena”,age=15)

    print(d[“age”]) #15

添加/修改元素

字典[键]=表达式

示例:

d={} 创建空字典

d[“name”]=“tarena” 创建一个新键值对

d[“age”]=15 创建键值对

d[“age”]=16 改变键值对

删:

del 语句 删除字典的元素

语法:

del 字典[键]

示例:

d={“name”:“china”,“pos”:“asd”}

​ del d[pos]

print(d)

del d[name]

print(name)

字典的in/not in 运算符

(用 in 仅能判断键是否在字典中如果存在则返回true,否则返回false

not in 与in 返回值相反

示例:时间 快于 list

d={1:2,2:“23”,3:“sdfl”}

1 in d True

“23” in d False

“cd” not in d False

3 in d True

字典的迭代访问(任何容器类都是可迭代对象)

字典是可迭代对象,字典只能对键进行迭代访问

d={“name”:“tarena”,(1997.8.2):“生日”}

for x in d:

print(x)

for x in d:
… print(x,d[x])

可以用于字典键的内建函数 (只看键,不看值)

len(x) 返回键的键值对个数

max(x) 返回键的最大值

min(x) 返回键的最小值

sum(x) 返回字典内所有键的和

any(x) 真值测试 只对键 如果其中一个键为真,结果为True

all(x) 真值测试 只对键 全部键为真,结果为True

字典的方法

.pop()

.clear()

.items()

.keys()

.values()

.get()

.update()

.copy()

练习

写程序,实现如下需求

将如下程序,形成一个字典seasons

“键” “值”

1 “春季有1,2,3月”

2 “夏季有4,5,6月”

3 “秋季有7,8,9月”

4 “冬季有10,11,12月”

让用户输入一个整数代表这个季度,打印这个季度的信息,如果用户输入的信息不存再字典的键内,则返回不存在

seasons={
1:"春季有1,2,3月",

2:"夏季有4,5,6月",

3:"秋季有7,8,9月",

4:"冬季有10,11,12月"
}
i=int(input("请输入键值(1-4):"))

if i in seasons:
    print(seasons[i])
else:
    print("输入有误!")

写程序,输入一段字符串,打印出这个字符串中出现过的字符以及出现过的次数

如:

输入:ASDSFGSGAG

输出:

A:2

B:0

C:0

s=input("请输入一段字符串:")
for x in s:
    print(x,":",s.count(x),"次")
字典推导式

字典推导式是用可迭代对象一次生成字典内元素的表达式

语法:

{键表达式:值表达式 for 变量 in 可迭代对象 [if 真值 表达式]}

[ ]内部可以省略

示例:

d={x:x**2 for x in range(10)}

练习

1.有字符串列表如下:

l=[“tarena”,“xiangzheng”,“xiaoming”]

生成如下字典:

d={“tarena”:6,“xiangzheng”:10,“xiaoming”:9}

l=["tarena","xiangzheng","xiaoming"]
d={}
for x in l:
    if x not in d :
        d[x]=len(x) #键=值
print(d)

2.列表编号如下:

Nos=[1001,1002,1003,1004]

names=[“Tom”,“Jerry”,“Spike”,“Tyke”]

生成 用Nos数据为键,以names为值的字典,如下:

{1001:“Tom",1002:“Jerry”,1003:“Spike”,1004:“Tyke”}

练习:

1、写一个程序,输入一些单词和解释,将单词作为键,将解释作为值,将这些数据存于字典中

然后:

输入查询的单词,显示出此单词的解释

a=[]
b=[]
d=dict()
while 1:
    i=input("请输入单词:")
    e=input("请输入解释:")
    if i=="":
        break
    if i not in a:
        a.append(i)
    if e not in b:
        b.append(e)
d={x:b[a.index(x)] for x in a }
c=input("请输入要查询的单词:")
for x in d:
    if c==x:
        print(d[x])

猜你喜欢

转载自blog.csdn.net/weixin_43409365/article/details/83046431