35 字典中 format_map方法格式化字符串序列与迭代

第四课 用format_map方法格式化字符串 用于字典中
# 用format_map方法格式化字符串 首先 format_map方法 不是字典中的,是字符串的 
values1 = (1,2,'hello')       # 这是定义一个元组
str1 = "abc %d   xyz, %d, %s world"     # %d 数字  %s 字符串 
print(str1 % values1)               # abc 1   xyz, 2, hello world
values2 = {'title':'极客起源', 'url':'https://geekori.com','company':'欧瑞科技'} # 定义一个字典
str2 = """
<html>
<head>
<title>{title}</title>
<meta charset="utf-8"/>
</head>
<body>
<h2>{title}</h2>
<a href="{url}">{company}</a>
</body>
</html>
"""
print(str2.format_map(values2))
# 输出的结果为
'''
<html>
<head>
<title>极客起源</title>
<meta charset="utf-8"/>
</head>
<body>
<h2>极客起源</h2>
<a href="https://geekori.com">欧瑞科技</a>
</body>
</html>
'''
----------------------------------------------
第五课 序列(列表 元组 字典)与迭代  
# 序列与迭代   序列包含(列表 元组 字典) 迭代 可以比如重复的for循环 
'''
1. 获取字典中key的列表
2. 获取字典中key—value对的列表
3. 并行迭代
4. 压缩序列
5. 反转序列迭代
迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值。
重复执行一系列运算步骤,从前面的量依次求出后面的量的过程。此过程的每一次结果,都是由对前一次所得结果施行相同的运算步骤得到的。例如利用迭代法*求某一数学问题的解。
对计算机特定程序中需要反复执行的子程序*(一组指令),进行一次重复,即重复执行程序中的循环,直到满足某条件为止,亦称为迭代。
'''
# 定义一个字典
d = {"name":"Bill", "age":20,"sex":"男", "salary":4567.5}
# 迭代字典中的key
for key in d:
print("{} = {}".format(key, d[key]), end = ' ') # name = Bill age = 20 sex = 男 salary = 4567.5 
print()
# 同时迭代字典中的key和value
for key,value in d.items():                         # d.items() 字典中的一个 items方法 获取字典中的kv对 
print("{} = {}".format(key, value), end = ' ')  # name = Bill age = 20 sex = 男 salary = 4567.5 
# 上面的2个结果是完全一样的,方法和思想是不一样的 
print()   # 换行
# 并行迭代
list1 = [1,2,3,4,5]
list2 = ['a','b','c','d','e']
for i in range(len(list1)):      # 产生一个范围 
print("list1[{}] = {}, list2[{}] = {}".format(i,list1[i],i,list2[i]),end = " ")
# 输出的结果Wie
# list1[0] = 1, list2[0] = a list1[1] = 2, list2[1] = b list1[2] = 3, list2[2] = c list1[3] = 4, list2[3] = d list1[4] = 5, list2[4] = e 
print()
# 压缩迭代 引入zip函数 
for value in zip(list1, list2):
print(value, end = " ")     # (1, 'a') (2, 'b') (3, 'c') (4, 'd') (5, 'e')
print()
items = []                       # 定义一个列表之后, 追加 然后进行 dict转化为 字典 
for value in zip(list2, list1):
items.append(value)
d1 = dict(items)
print(d1)                     # {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
print()
# print(zip(list1, list2))
# 反转排序迭代    这里values1的元素 只支持数字,不支持字符串的    
values1 = [4,1,5,6,3,1,7,9]
print(sorted(values1))        # [1, 1, 3, 4, 5, 6, 7, 9]         sorted 排序
values2 = reversed(values1)     # reversed 反转 
for v in values2:
print(v, end = " ")      # 9 7 1 3 6 5 1 4 
print()
# abcdefg  gfedcba
print(''.join(list(reversed("abcdefg"))))   # 结果为: gfedcba   思想为:reversed先倒序 然后list转化为一个列表  然后在通过 join链接起来 中间没有任何的东西,需要用空串去链接就可以了  最后的结果为就是把 列表中的元素首尾 相接 中间没有任何的分隔符  2个函数1个方法 
分布式为: 
print(list(reversed("abcdefg")))         # ['g', 'f', 'e', 'd', 'c', 'b', 'a']   
------------------------------------------------
第六课 清空字典(clear方法)
# clear方法: 彻底清空字典 
names1 = {"Bill":20, "Mike":30,"John":50}
names2 = names1
names1["Bill"] = 45    
print(names2)        # {'Bill': 45, 'Mike': 30, 'John': 50}
#names1 = {}
names1.clear()     # 清空 
print(names2)      # {}
-----------------------------------------------
第七课 复制字典(copy方法和deepcopy函数)
# copy方法与deepcopy函数 2个都是复制字典的 但是他们有什么区别呢?
# copy方法是潜复制 只复制第一层 剩下的就共同指向一个值了 如果字典中的值是另外的一个字典或者一个列表 复制完的字典的值就是指向同一个对象  通俗的讲究是 变一个都变 相互关联的 
# deepcopy函数 深复制 不管你有多少层都进行复制    变其中一个,另外的一个不变 
person1 = {"name":"Bill", "age":30, "fullName":["Bill","Gates"]}
person2 = person1.copy()
print('person2' , person2)  # person2 {'name': 'Bill', 'age': 30, 'fullName': ['Bill', 'Gates']}   结果和person1 是完全一样的 
person1["age"] = 60       # 改变了 person1的值,person1 变了 person2 是person1 copy过来的 那么person2 的值 没有变 
print('person1' , person1) # person1 {'name': 'Bill', 'age': 60, 'fullName': ['Bill', 'Gates']}
print('person2' , person2) # person2 {'name': 'Bill', 'age': 30, 'fullName': ['Bill', 'Gates']}
person1["fullName"][1] = "Clinton"  # 改变了 fullName (为第二层) 索引为1的值  person1 person2 的值都变了  这一步为潜复制 变一个都变 
print('person1' , person1) # person1 {'name': 'Bill', 'age': 60, 'fullName': ['Bill', 'Clinton']}
print('person2' , person2) # person2 {'name': 'Bill', 'age': 30, 'fullName': ['Bill', 'Clinton']}
from copy import deepcopy
person1 = {"name":"Bill", "age":30, "fullName":["Bill","Gates"]}
person2 = deepcopy(person1)
# 在这里 person1 和person2 为2个完全不同的2个字典   改变了person1 的值 person2的值是不会变的 
person1["fullName"][1] = "Clinton"   # 用 deepcopy函数 改变了 fullName 索引为1的值  person1 变了 person2 没有变 
print("person1", person1)   # person1 {'name': 'Bill', 'age': 30, 'fullName': ['Bill', 'Clinton']}
print("person2", person2)   # person2 {'name': 'Bill', 'age': 30, 'fullName': ['Bill', 'Gates']}
---------------------------------------------
第八课 根据key创建字典(fromkeys方法)
# fromkeys方法 : 作用 可以根据这个方法 key 创建一个字典 并且所有的key都是拥有同一个值,同一个默认值 这个方法的返回值就是新的字典 
# None
newDict1 = {}.fromkeys(['name', 'company', 'salary'])                  # 空的字典,返回值的value为空 用列表表示key
print(newDict1)  # {'name': None, 'company': None, 'salary': None}
newDict2 = newDict1.fromkeys(('name', 'company','age'))              # 空的字典,返回值的value为空 用元组表示key
print(newDict2) # {'name': None, 'company': None, 'age': None}
newDict3 = newDict1.fromkeys(['name', 'company', 'salary'],'没有值')    # 不指定就是None 
print(newDict3) # {'name': '没有值', 'company': '没有值', 'salary': '没有值'}
newDict3 = {}.fromkeys(['name', 'company', 'salary'],'majihui')    # {'name': 'majihui', 'company': 'majihui', 'salary': 'majihui'} 
print(newDict3)
-----------------------------------------------
第九课 用更宽松的方式获取字典中的 value(get方法)
# get方法
dict = {"name":"Bill", "age":30}
print(dict["age"])   # 30
#dict['salary'] = 3000      
#print(dict['salary'])              # 报错 不存在 
print(dict.get('salary'))       # None   用get的话 不存在的值 会返回 None 
print(dict.get('salary', 3000)) # 3000
# 此场景经常用于解读 key values的值   get方法去获取不在字典中的key 友好的输出不至于报错
d  = {'help':'帮助', 'bike':'自行车','geek':'极客', 'China':'中国'}
while True:
word = input('请输入英文单词:')
if word == ':exit':
break;
value = d.get(word)
if value == None:
print('{}在字典中不存在.'.format(word))
else:
print('"{}"的含义是"{}"'.format(word,value))
请输入英文单词:china
china在字典中不存在.
请输入英文单词:China
"China"的含义是"中国"
请输入英文单词:exit

原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/183943.html

(0)
上一篇 2021年11月3日
下一篇 2021年11月3日

相关推荐

发表回复

登录后才能评论