0
点赞
收藏
分享

微信扫一扫

【毕设记录日记】深度学习|铝型材表面缺陷视觉检测算法:Python基础内容笔记整理4:字典、对于字典的相关操作、字典与列表的嵌套

老榆 2022-04-07 阅读 63

前篇:
【毕设记录日记】深度学习|铝型材表面缺陷视觉检测算法:基于Windows系统中的Python环境配置基础:Python3、终端测试、Visual Studio2019环境配置_SylviaMiller的博客-CSDN博客

【毕设记录日记】深度学习|铝型材表面缺陷视觉检测算法:Python基础内容笔记整理1:环境基本注意事项、变量及简单数据类型、列表_SylviaMiller的博客-CSDN博客

【毕设记录日记】深度学习|铝型材表面缺陷视觉检测算法:Python基础内容笔记整理2:数值列表、遍历列表、元组、PEP8代码格式设置指南_SylviaMiller的博客-CSDN博客

【毕设记录日记】深度学习|铝型材表面缺陷视觉检测算法:Python基础内容笔记整理3:条件测试、简单if语句、复合if语句_SylviaMiller的博客-CSDN博客 

 1 使用字典

(1)字典是一系列键值对。

(2)可以使用键来访问与之相关联的值。

(3)与键相关联的值可以是数字、字符串、列表、字典,可将任何Python对象用作字典中的值。

(4)字典使用花括号{ }表示,键和值之间使用冒号分隔,而键-值对之间用逗号分隔。

(5)键-值对是两个相关联的值,指定键时,Python将返回相关联的值。

2 访问字典中的值

(1)指定字典名和放在方括号[ ]中的键。

(2)值为文本带单引号' ',值为数字不带单引号。

(3)输出数字时需要用str()转换为字符串,再与字符串一起输出。

3 添加键-值对

(1)字典是动态结构,可以随时添加键值对。

(2)指定字典名、用方括号括起来的键和相关联的值。

(3)键-值对的排列顺序与添加顺序不同,Python只关心键和值之间的关联关系,不关心键-值对的添加顺序。

(4)可以创建空字典再向其中添加键值对,使用字典来存储用户提供的数据或在编写能自动生成大量键-值对的代码时,通常都要先定义一个空字典。

4 修改字典中的值

(1)指定字典名、用方括号括起的键以及与该键相关联的新值。

5 删除键-值对

(1)del语句将相应键值对彻底删除(永久性删除)。

(2)del语句需要指定字典名、要删除的键。

6 由类似对象组成的字典

该字典存储众多对象的同一种信息(即键是不同的对象,但值是同一类信息)。

7 遍历字典

遍历字典有多种方式:遍历字典的所有键值对、键或值。

7.1 遍历所有的键-值对

(1)适用于:字典存储不同键的同种类信息(值)。

(2)使用for循环遍历字典,声明两个变量,一个用于存储键-值对中的键和值,对于这两个变量可以使用任何名称。

(3)方法items():返回一个键值对列表,for循环依次将每个键值对存储到指定的两个变量中。

7.2.1 遍历字典中的所有键

(1)适用于:不需要使用字典中的值。

(2)使用for循环遍历字典,声明一个变量即可,存储键值对中的键,对于这个变量可以使用任何名称。

(3)方法keys():keys()并非只能用于遍历,其返回一个包含字典中所有键的列表,除了遍历字典得到所有键以外,还可以合适某个键是否在这个列表(字典)当中。

#核实元素element是否在字典dictionary中,若不在则打印对应文本
if 'element' not in dictionary.keys():
    print("The element is not in this dictionary!")

7.2.2 按顺序遍历字典中所有的键

(1)适用于:需要获取字典元素的顺序时。

(2)使用for循环对返回的键进行排序,可以使用函数sorted()来获得按特定顺序排列的键列表表的副本。

(3)函数sorted():见列表篇

7.3 遍历字典中的所有值

(1)适用于:需要只获取字典的值时。

(2)使用for循环遍历字典,声明一个变量即可,存储键值对中的值,对于这个变量可以使用任何名称。

(3)方法values():返回一个值列表,不包含任何键。

(4)集合set():对于包含重复元素的列表调用set(),让Python找出列表中独一无二的元素,并使用这些元素来创建一个集合。

8 嵌套

将一系列字典存储在列表里,或将列表作为值存储在字典中,称为嵌套。

可以在(1)列表中嵌套字典(2)在字典中嵌套列表(3)在字典中嵌套字典

8.1 字典列表(在字典中嵌套列表)

(1)适用于:列表中包含着大量字典,每个字典存储着特定对象的众多信息,列表中每个字典结构都相同,可遍历这个列表并使用相同方法处理字典。

(2)range(n):可以返回一系列数字,用在for循环中主要用于定义循环会运行多少次。

#该循环会运行n次
for element in range(n):
    print(".")

(3)字典列表中的字典都具有相同特征,但Python认为每个字典都是独立的,所以可以独立修改每个字典。

(4)可以使用if-elif-else结构修改字典内容。

(5)示例:为网站每个用户创建一个字典,并将这些字典存户在一个名为users的列表中。

8.2 在字典中存储列表

(1)适用于:该字典中一个键需要关联多个值,使用字典存储列表可为需要存储的对象添加多个相关描述。

(2)可以在遍历字典的for循环开头加if-else语句,搭配len()函数查看列表长度,若长度为1执行操作1,若长度为2执行操作2……

8.3 在字典中存储字典

(1)适用于:一个字典中每个键、值都是独特的,但最好表示每个个体的字典结构都相同,能够使得嵌套的字典处理起来相对更加容易。

(2)示例:由多个网站用户,每个都有独特的用户名,可以在字典中将用户名作为键,然后将每位用户的信息都存储在一个字典中,并将该字典作为用户名相关联的值。

#对于每位用户都存储了三项信息:名、姓和居住地,为访问这些信息,遍历所有的用户名,并访问每个用户名相关联的信息字典
users={
    'aeinstein':{
        'first':'albert',
        'last':'einstein',
        'location':'princeton',
        },
    
    'mcurie':{
        'first':'marie',
        'last':'curie',
        'location':'paris',
        },
    
    }

for username,user_info in users.items():
    print("\nUsername:"+username)
    full_name=user_info['first']+" "+user_info['last']
    location=user_info['location']

    print("\tFull name:"+full_name.title())
    print("\tLocation:"+location.title())

9 课后习题

题目都打在注释里了。

#ex6-1 friend
#使用一个字典存储一个朋友的信息,包括:名、姓、年龄和居住的城市
#该字典应包含键first_name、last_name、age和city
friend={'first_name':'Jenne','last_name':'Liu','age':22,'city':"Xi'an"}
#将存储在字典中的每项信息全部打印出来
print("She is my friend,and her name is "+
      friend['first_name']+
      " "+
      friend['last_name']+
      ","+
      "She "+
      str(friend['age'])+
      " years old"+
      ","
      "and live in "+
      friend['city']+
      " now."+
      "\n")

#ex6-2 favorite_number
#使用一个字典来存储一些人喜欢的数字,想出5个人的名字,将这些名字用作字典中的键
#想出每个人喜欢的一个数字,并将这些数字作为值存储在字典中
favorite_number={
    'Ann':5,
    'Anne':26,
    'Ben':1,
    'Benny':21,
    'Coco':6,
    }
#打印每个人的名字和喜欢的数字
print("Ann:"+
      str(favorite_number['Ann'])+
      "\n"+
      "Anne:"+
      str(favorite_number['Anne'])+
      "\n"+
      "Ben:"+
      str(favorite_number['Ben'])+
      "\n"+
      "Benny:"+
      str(favorite_number['Benny'])+
      "\n"+
      "Coco:"+
      str(favorite_number['Coco'])+
      "\n")

#ex6-3 vocabulary
#创建一个字典,存储5个学过的词汇,将其用作词汇表中的键,并将它们的含义作为值存储在词汇表中
vocabulary={
    'a':'one single;any',
    'abandon':'give up completely',
    'anne':'Queen of England',
    'anyone':'any person or people',
    'rice':'the grains of this cereal used as food'}
#以整洁的方式打印每个词汇及其含义,先打印词汇,后面加上一个冒号,再打印词汇含义
#在一行打印词汇,再使用换行符(\n),插入一个空行
#在下一行以缩进的方式打印词汇含义
print("a:\n\t"+
      vocabulary['a']+
      "\n"+
      "abandon:\n\t"+
      vocabulary['abandon']+
      "\n"+
      "anne:\n\t"+
      vocabulary['anne']+
      "\n"+
      "anyone:\n\t"+
      vocabulary['anyone']+
      "\n"+
      "rice:\n\t"+
      vocabulary['rice']+
      "\n")

#ex6-4 vocabulary_2
#将ex6-3中的一系列print语句替换为一个遍历字典中的键和值的循环
for word,paraphrase in vocabulary.items():
    print("Word:"+word)
    print("Paraphrase:"+paraphrase)
    print("\n")
print("________________________________________________________________")
#向列表中添加5个词语,再次运行时将这5个新术语及其含义自动包含在输出中
vocabulary['balance']='remain in a steady position without falling'
vocabulary['cat']='a wild animal of the cat family'
vocabulary['dog']='a wild animal of the dog family'
vocabulary['deal']='take part in commercial trading of a particular commodity'
vocabulary['dawn']='the first appearance of light in the sky before sunrise'
#将新术语包含在输出中
for word,paraphrase in vocabulary.items():
    print("Word:"+word)
    print("Paraphrase:"+paraphrase)
    print("\n")

#ex6-5 river
#创建一个字典,存储三条大河流及其流经的国家
river={
    'nile':'egypt',
    'yellow river':'china',
    'ganges':'india',
    }
#使用循环为每条河流打印一条消息
for river_name,country in river.items():
    print("The "+river_name.title()+
          " runs through "+country.title()+
          ".")
print("\n")
#使用循环将该字典中每条河流的名字都打印出来
for river_name in river.keys():
    print(river_name.title())
print("\n")
#使用循环将该字典包含的每个国家的名字都打印出来
for country in river.values():
    print(country.title())
print("\n")

#ex6-6 investigate
favorite_languages={
    'jen':'python',
    'sarah':'c',
    'edward':'ruby',
    'phil':'python',
    }
#创建一个应该会接受调查的人员名单,其中有些人已包含在字典中,其他人未包含在字典中
users=['jen','sarah','dannel','edward','phil','coco']
#遍历人员名单
for user_name in users:
    #对于已参与调查的人,打印一条消息表示感谢
    if user_name in favorite_languages.keys():
        print(user_name.title()+",thank you for taking the poll.")
    #对于未参与调查的人,打印一条消息邀请他参与调查
    if user_name not in favorite_languages.keys():
        print(user_name.title()+",please take our poll as soon as possible.")
print("\n")

#ex6-7 friend_2
#基于ex6-1,再创建两个表示人的字典
friend_0={'first_name':'Jenne','last_name':'Liu','age':22,'city':"Xi'an"}
friend_1={'first_name':'Jerry','last_name':'Zhang','age':21,'city':"Xi'an"}
friend_2={'first_name':'Casey','last_name':'Deng','age':21,'city':'Manchester'}
#将这三个字典都存储在一个名为people的列表中
people=[friend_0,friend_1,friend_2]
#遍历这个列表,将其中每个人的信息都打印出来
for friend in people:
    print(friend)
print("\n")

#ex6-8 pets
#创建多个字典,对于每个字典都使用一个宠物的名称来命名
Ding={'variety':'British short','host':'Sylvia'}
Ro={'variety':'Muppet','host':'Rodaddy'}
Nine={'variety':'Chinese pastoral cat','host':'Ninemommy'}
#将这些字典存储在一个名为pets的列表中
pets=[Ding,Ro,Nine]
#遍历这个列表,将宠物所有信息都打印出来
for pet in pets:
    print(pet)
print("\n")

#ex6-9 favorite_places
#创建名为favorite_places的字典
#将三个人名用作键,对于每个人存储1~3个喜欢的地方
favorite_places={
    "Sylvia":['Beijing','Guangzhou'],
    "Nana":['Hangzhou'],
    "Jenny":['Shanghai','Dalian'],
    }
for friend_name,favorite_place in favorite_places.items():
    if len(favorite_place)==1:
        print("\n"+friend_name.title()+"'s favorite place is:")
        for favorite_city in favorite_place:
            print("\t"+favorite_city.title())
    else:
        print("\n"+friend_name.title()+"'s favorite places are:")
        for favorite_city in favorite_place:
            print("\t"+favorite_city.title())

#ex6-10 favorite_number_2
#基于ex6-2,让每个人可以有更多个喜欢的数字
favorite_numbers={
    'Ann':[5,26],
    'Anne':[50],
    'Ben':[1,21],
    'Benny':[5,20],
    'Coco':[6],
    }
#将每个人的名字和喜欢的数字打印出来
for friend_name,favorite_number in favorite_numbers.items():
    if len(favorite_number)==1:
        print("\n"+friend_name.title()+"'s favorite number is:")
        for favorite_number_2 in favorite_number:
            print("\t"+str(favorite_number_2))
    else:
        print("\n"+friend_name.title()+"'s favorite numbers are:")
        for favorite_number_2 in favorite_number:
            print("\t"+str(favorite_number_2))

#ex6-11 cities
#创建一个名为cities的字典,其中三个城市名称用作键
#对于每座城市都创建一个字典,并包含该城市所属国家,人口
cities={
    'Xian':{
        'Country':'China',
        'Population':13163000,
        },
    'New York':{
        'Country':'America',
        'Population':8510000,
        },
    'Manchester':{
        'Country':'England',
        'Population':514400,
        },
    }
#将每座城市的名字以及有关他们的信息都打印出来
for city_name,city_information in cities.items():
    print("\nCityname:"+city_name+
          "\n\tCountry:"+city_information['Country']+
          "\n\tPopulation:"+str(city_information['Population']))

 参考书籍:Python编程从入门到实践(书籍) - 知乎

举报

相关推荐

0 条评论