第13课字典(代码片段)

nick1998 nick1998     2023-01-30     372

关键词:

一、字典

1、字典的定义:    <class ‘dict‘>

>>> dict1 = 
>>> type(dict1)
<class dict>

2、dict1 = 键1:值,键2:值

dict2 = name: Tom, age:18, weight: 130

3、键值成对出现,不然会报错。

>>> dict2 = name: Tom, age:18, weight: 130
>>> dict3 = name: jacky, age: 18, class
SyntaxError: invalid syntax

4、通过键来查找元素,没有下标的概念。

>>> dict2 = name: Tom, age:18, weight: 130
>>> dict2[weight]
130

1)用len(dict1)来获取字典的长度

>>> dict2 = name:Tom, age:18 , weight:130
>>> len(dict2)
3

5、字典里没有同名的key(键),就算有,后面的key也会把前面同名的key覆盖掉。

>>> dict3 = name:Tom, age:18, name:Jacky
>>> dict3
name: Jacky, age: 18

6、增加元素----格式:dict1[键名] = 值

1)python2--增加字典元素的位置是随机的;

2)python3--从字典后面依次增加

>>> dict3 = name:Tom, age:18
>>> dict3[weight] = 136
>>> dict3
name: Tom, age: 18, weight: 136

7、如果该字典里面没有这个key,那么打印这个key对应的值会报错----keyerror

>>> dict3 = name: Tom, age: 18, weight: 136
>>> print(dict3[class])
Traceback (most recent call last):
  File "<pyshell#16>", line 1, in <module>
    print(dict3[class])
KeyError: class

8、增加字典的元素:dict1[新键名] = 对应的值

9、字典可以存储任意类型

# 一个键对应的值可以是任意类型
students = 
    Jim Green: age: 18,   
                  height: 186,
                  weight: 180,
                  nickname: Jimy,
    Linda Smith:
        age: 23,
        height: 168,
        weight: 108,
        nickname: sweet  


print(students[Linda Smith])


# 执行结果 
age: 23, height: 168, weight: 108, nickname: sweet

打印Jim的年龄信息

print(students[Jim Green][age])  # 打印Jim的年龄

#输出结果
18

10、关于key的类型,value的类型

1)key的类型:int、str、float和tuple,但是不能为list(列表)、dict(字典)。hash:散列表----不能改变的类型

注意:对键值操作时不要刻意改变key。

>>> dict1 = 1: int型, 3.14: float型, yy: str型, (6,7,8,9): tuple型
>>> dict1
1: int型, 3.14: float型, yy: str型, (6, 7, 8, 9): tuple型

当key的类型为列表时会报错

>>> dict1 = [1,2,yy]: list型
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    dict1 = [1,2,yy]: list型
TypeError: unhashable type: list

key的类型为字典也报错

>>> dict1 = name: Tom: 33
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    dict1 = name: Tom: 33
TypeError: unhashable type: dict

2)value(值):可以为任意类型

 

二、常用操作

1、判断字典里是否有这个key,可以用---key in dict1;在python2中dict1.has.key(键)的形式。

>>> dict1 = 1: int型, 3.14: float型, yy: str型, (6,7,8,9): tuple型
>>> 3.14 in dict1
True
>>> xx in dict1
False

2、关于字典的删除元素:字典里面的key相当于list里面的index(下标)

1)del dict1[‘name‘]

>>> dict1 = name: Tom, age: 21, weight: 130
>>> del dict1[name]
>>> dict1
age: 21, weight: 130

2) value =  dict1.pop(‘name‘)

>>> dict1 = name: Tom, age: 21, weight: 130
>>> dict1.pop(name)
Tom
>>> dict1
age: 21, weight: 130

3、字典的遍历

1)for one in dict1 ----one依次取key本身的值

>>> dict1 = name: Tom, age: 21, weight: 130
>>> for one in dict1:
    print(one)

    
name
age
weight

2)打印字典的值----dict的[one]

>>> dict1 = name: Tom, age: 21, weight: 130
>>> for one in dict1:  # one 指的是字典值的内容
    print(dict1[one])

    
Tom
21
130

3)打印字典特定的值-----dict1[one[‘age‘]]

students = 
    Jim Green: age: 18,
                  height: 186,
                  weight: 180,
                  nickname: Jimy,
    Linda Smith:
        age: 23,
        height: 168,
        weight: 108,
        nickname: sweet  


for one in students:
    print(students[one][age])

# 执行结果
18
23

4)students.items()----遍历字典的键值对[(键1,  值1),  (键2,  值2)]

print(students.items())

# 结果是一个列表,列表中包含元组
dict_items([(Jim Green, age: 18, height: 186, weight: 180, nickname: Jimy), (Linda Smith, age: 23, height: 168, weight: 108, nickname: sweet)])

把信息从students.items()中取出来---for name, info in students.items():

students = 
    Jim Green: age: 18,
                  height: 186,
                  weight: 180,
                  nickname: Jimy,
    Linda Smith:
        age: 23,
        height: 168,
        weight: 108,
        nickname: sweet  



for name, info in students.items():
    print(name, info)

# 执行结果
Jim Green age: 18, height: 186, weight: 180, nickname: Jimy
Linda Smith age: 23, height: 168, weight: 108, nickname: sweet

4、清空字典内容:

1)dict1.clear()----清空字典本身内容

>>> dict1 = name: Tom, age: 21, weight: 130
>>> dict1.clear()
>>> dict1

2)dict1 = ---把dict1指向一个空字典

>>> dict1 = name: Tom, age: 21, weight: 130
>>> dict1 = 
>>> dict1

5、获取字典中所有的key----dict1.keys(),返回结果在一个列表中

 dict1 = name: Tom, age: 21, weight: 130
>>> dict1.keys()
dict_keys([name, age, weight])

6、获取字典中所有的value-----dict1.values(),返回结果在一个列表中

>>> dict1 = name: Tom, age: 21, weight: 130
>>> dict1.values()
dict_values([Tom, 21, 130])

7、获取字典中所有的key,value,返回结果在一个列表中

>>> dict1 = name: Tom, age: 21, weight: 130
>>> dict1.items()
dict_items([(name, Tom), (age, 21), (weight, 130)])

8、dict1.update----增加字典的元素

>>> dict1 = name: Tom, age: 21, weight: 130
>>> dict1.update(1:1, 2:2)
>>> dict1
name: Tom, age: 21, weight: 130, 1: 1, 2: 2

练习:2个字典所有的key都一样,请打印具有相同的键值,并打印键值对

dict1 = 1: a, 2: b, 3: c, 4: 100, 5: 200
dict2 = 1: x, 2: y, 3: z, 4: 100, 5: 200


for num1 in dict1:
    for num2 in dict2:
        if num1 == num2 and dict1[num1] == dict2[num2]:
            print(num1, dict1[num1])


# 执行结果
4 100
5 200

 

第22课条件编译使用分析(代码片段)

条件编译的基本概念: 条件编译就是利用预处理器的功能来对代码进行一些删除操作。程序示例:1#include<stdio.h>23#defineC145intmain()67constchar*s;89#if(C==1)10s="Thisisfirstprintf...";11#else12s="Thisissecondprintf...";13#endif1415p 查看详情

第5课变量属性(代码片段)

C语言的变量属性: auto关键字: register关键字: 全局变量不能定义为register型的变量,因为它的生命周期是从程序开始到结束的,不可能让一个变量始终占据寄存器。static关键字: 示例程序:1#include<stdio.h>23i... 查看详情

ybtoj11.13s组贪心b.字典之序(代码片段)

B.字典之序题面解题思路Codeybtoj11.13S组B.字典之序题面样例样例输入1cbabc样例输出1abc样例解释1去掉第一个c和第一个b。样例输入2ixsaygmtakciayxjbsaoqlkicrhkodsyoctmeqnqvmzhucfceboowtwungckyejrqnekkesnkggasacydagwnipnsnrkvikkkquu样例输出2acixbldemzhfotgjk 查看详情

第17课调试程序(代码片段)

...出结果是将数据库记录文件中的学生签到信息保存在一个字典对象中,并作为返回值返回。defputInfoToDict(fileName):要求返回的字典对象的格式是这样的:key是各个学生的id号,value是该学生的签到信息其中value,里面保存着该学生所... 查看详情

第17课对象的构造(上)(代码片段)

对象中的成员变量的初始值是多少?小实验:  示例如下:我们可以看到打印出来的i和j的值确实是随机值。添加Test类的全局对象gt,再次运行结果如下:可以看到gt对象中的i和j都为0。第20行定义的t1在栈上,而13行的gt在... 查看详情

第35课函数对象分析(函数操作符()重载)(代码片段)

1. 为什么需要函数对象(1)案例  ①编写一个函数,使函数可以获得斐波那契数列每项的值。  ②每调用一次返回一个值  ③函数可根据需要重复使用       【编程实验】第一个解决方案 1/*斐波那契数... 查看详情

ruby第1课(代码片段)

查看详情

ruby第4课(代码片段)

查看详情

ruby第3课(代码片段)

查看详情

ruby第2课(代码片段)

查看详情

使用 Swift 开发应用程序 - 第 13 课 - 练习:“isBelow13”

...用“使用Swift开发应用程序”-Book来学习。请检查下面的代码-它不起作用,我不知道为什么。importUIKitfuncisBelo 查看详情

python第六课字典和集合(代码片段)

在python中字典是唯一的映射类型,映射是数学上的一个术语,指两个元素集之间元素相互“对应”的关系。与Java中的Map集合很类似。映射类型区别于序列类型,序列类型以数组的形式存储,通过索引的方式类获取... 查看详情

python第六课字典和集合(代码片段)

在python中字典是唯一的映射类型,映射是数学上的一个术语,指两个元素集之间元素相互“对应”的关系。与Java中的Map集合很类似。映射类型区别于序列类型,序列类型以数组的形式存储,通过索引的方式类获取... 查看详情

golang第3课启动代码(代码片段)

查看详情

swift第6课排序(代码片段)

查看详情

python第1课-软件调试(代码片段)

查看详情

写给python社群的第4课:字典和集合,又是一组新概念(代码片段)

文章目录⛳️字典简介⛳️字典的基本方法🔥字典元素添加🔥获取字典键对应的值🔥字典元素的修改🔥字典元素的删除🔥字典的遍历⛳️集合学习🔥集合添加元素🔥集合删除元素🔥统计集合个... 查看详情

swift第7课堆栈和队列(代码片段)

查看详情