Python Base——Part 6

本文介绍了Python中如何修改字典值、使用if语句处理字典、删除键值对以及访问值。还讲解了遍历字典的方法,包括遍历键值对、键和值。此外,探讨了字典的嵌套,如在列表中嵌套字典和在字典中嵌套列表、字典,展示了如何批量修改嵌套数据结构中的信息。
摘要由CSDN通过智能技术生成

Python Base——Part 6

又是一个星期过去了,再来更新一下Python的基础知识

本次的分享依旧包括三个部分:

第一部分:在Python中如何修改字典中的值;在字典中使用if语句;删除字典中的值(删除键值对);访问字典中的值

#修改字典中的值
print(f"The author is {dic['name'].title()}.")
#注意:索引字典中的值时应该用单引号,如果用双引号将会报错。如下所示
#print(f"The author is {dic["name"]}.")
#因为用双引号表示给字典中的键指定一个值
dic["name"]="bill"
print(dic)
print(f"The author is now {dic['name'].title()}.")

#在字典中使用if语句
alien_0["speed"]="slow"
print(alien_0)
print(f"Original position: ({alien_0['x_position']}, {alien_0['y_position']})")
if alien_0['speed'] == "slow":
    x_increment=2
    y_increment=4
elif alien_0['speed'] == "medium":
    x_crement=4
    y_increment=6
elif alien_0['speed'] == "fast":
    x_crement=6
    y_crement=8
alien_0["x_position"]=alien_0['x_position'] + x_increment
alien_0["y_position"]=alien_0['y_position'] + y_increment
print(alien_0)
print(f"New position: ({alien_0['x_position']}, {alien_0['y_position']})")

#删除键值对
del alien_0['speed']
print(alien_0)
#注意:删除的键值对会永远消失

#由类似对象组成的字典(多个相同的元素组成的字典)
favorite_languages={
    "lisa":"c++",
    "bllie":"r",
    "bill":"java",
    "john":"python"
}
#注意:由类似对象组成的字典,每行键值对之前需要缩进(四个空格)。另外不要忘记花括号
print(f"Lisa's favorite language is {favorite_languages['lisa'].title()}.")

#使用get来访问值
print(dic)
#可以看到,此时dic这个字典中没有score这个键值对,如果我们执行接下来的操作,将会报错
#print(dic['score'])
#接下来我们使用get()来访问值
dic_score=dic.get('score',"No score in this dictionary. Please recheck it.")
print(dic_score)
#get()中第一个参数用来指定键,是必不可少的;第二个参数为指定的键不存在时要返回的值,是可选的(可以任意进行定义和修改的)
#如果字典中存在指定的键,那么将返回与该键相对应的值
dic["score"]=99
print(dic.get('score',"No score in this ditionary, Please recheck it."))
#如果字典中不存在指定的键,那么将返回我们定义的get()中第二个参数的值,且不会引发报错
#以上告诉我们,如果列表中有可能不存在某个键,那么请用get(),而不要用方括号
fruit=dic.get('fruit')
print(fruit)
#当我们没有指定第二个参数时,且指定的键也不存在时,那么将返回“None”。当然,这并不是报错

第二部分:

遍历字典(遍历字典中所有的键值对、遍历字典中所以的键、遍历字典中所有的值);按照特定的顺序遍历字典中所有的键

#遍历字典
#遍历字典中的所有键值对
print(number_like)
for name,number in number_like.items():
    print(f"{name.title()}'s favorite number is {number}.")
#与遍历列表不同,遍历字典需要在后面加上items()
print(defination)
for option,explain in defination.items():
    print(f"{option.title()} is:\n\t{explain.title()}.")
print(favorite_languages)
for name,language in favorite_languages.items():
    print(f"{name.title()} likes {language.title()} best.")

#遍历字典中的所有键
for name in favorite_languages.keys():
    print(name.title())
for option in defination.keys():
    print(option.title())
for name in number_like.keys():
    print(name.title())
for name in favorite_languages:
    print(name.title())
#显示的使用keys()可以让代码更容易理解。遍历所有的键时,可以保留keys(),当然也可以删除它
friends=['lisa','bill']
for name in favorite_languages.keys():
    print(f"Hi, {name.title()}!")
    if name.lower() in friends:
        language=favorite_languages[name] #注意,这里的name不需要用引号引起来
        #如果将name用引号引起来,那么就是代表在上述字典中索引name这个键,而字典中并没有这个键,因此就会报错
        print(f"Wow, {name.title()}, I see your favorite language. Is it \
{language.title()} right? That is great!")
#注意:这里代码太长因此利用斜杠\转行,但是并不需要缩进,缩进后打印出来的值就会产生多余的空格
    elif name.lower() not in friends:
        print(f"Nice to meet you, {name.title()}.")

#按特定顺序遍历字典中所有的键
#默认情况下,遍历字典中所有的键是按照他们插入字典中的顺序来排列
for name in sorted(favorite_languages.keys()):
    print(name) #在这里与上面不同的一点是加上了sorted(),将使键按照字母大小写排序
#同样的,这里的sorted是临时排序,并不会改变原始字典中键的排列顺序

#遍历字典中的所有值
print("The following languageshave been mentioned:")
for language in favorite_languages.values():
    print(language.title())
#遍历字典中的所有值,需要加上values()。但是这种方法并没有考虑重复值
#为剔除重复值,可以使用集合set()。集合中的每个元素都必须是独一无二的
game={
    'lisa':'a',
    'bill':'a',
    'billie':'b',
    'marrty':'b',
    'kevin':'c',
    'kathy':'c'
}
print("We accomplish with the following three plans in total.")
for plan in set(game.values()):
    print(plan.upper())
#可以使用花括号直接创建一个集合:
plans=['a','b','c']
print(plans)
#集合与字典的不同之处:
#集合中是一个一个单独的值,且用逗号分割开。并且不同于列表和字典,集合不会以特定的顺序存储元素
#而字典中是一对一对的键值对,每个键与每个对应的值用冒号分隔;每个键值对之间用逗号隔开

第三部分:

嵌套:在列表中嵌套字典、在字典中嵌套列表、在字典中嵌套字典

#嵌套:将一系列字典存储在列表中,或者将列表作为值储存在字典中
#可以在列表中嵌套字典、在字典中嵌套列表,甚至在字典中嵌套字典
#字典列表:在列表中嵌套字典
alien_0={'color':'green','points':5}
alien_1={'color':'red','points':4}
alien_2={'color':'yellow','points':3}
alien_3={'color':'blue','points':6}
aliens=[alien_0,alien_1,alien_2,alien_3]
print(aliens)
for alien in aliens:
    print(alien)
#使用range()自动生成30个字典并嵌套至列表中
aliens=[]
for alien_number in range(30):
    new_alien={'color':'green','points':5,'speed':'slow'}
    aliens.append(new_alien)
#显示前5个外星人
for alien in aliens[:5]:
    print(alien)
#显示一共创建了多少个外星人
print(f"There are {len(aliens)} aliens in total.")
#批量修改前3个外星人的信息
for alien in aliens[:3]:
    if alien['color'] == 'green':
        alien['color']='yellow'
        alien['points']=15
        alien['speed']='fast'
        print(alien)
for alien in aliens[:5]:
    print(alien)
#可以看到成功批量修改前三个外星人的信息
for alien in aliens[:5]:
    if alien['color'] == 'green':
        alien['color']='red'
        alien['speed']='medium'
        alien['points']=8
    elif alien['color'] == 'yellow':
        alien['color']='blue'
        alien['speed']='slow'
        alien['points']=6
    print(alien)

#在字典中存储列表
pizza_0={'user':'lisa','adding':['green peppers','cheese','beef']}
pizza_1={
    'users':'bill',
    'adding':['cheese','corn','milk']
}
#描述顾客所点的pizza
print(f"{pizza_0['user'].title()} ordered a pizza with the following toppings:")
for adding in pizza_0['adding']:
    print("\t"+adding)
#Tips:如果是要在一个单独的元素前面加上缩进字符,那么在他的前面加上 "\t"+ 即可,记得加上引号和加号
favorite_languages={
    'lisa':['python','r'],
    'bill':['c','java'],
    'kathy':['python','java'],
    'john':['c','r','java'],
    'marria':['python','r','c','java']
}
for name,languages in favorite_languages.items():
    print(f"{name.title()}'s favorite luanguages are:")
    for language in languages:
        print("\t"+language.title())
        #这里也可以变成print(f"\t{language.title()}")
#进一步优化程序
favorite_languages={
    'lisa':['python'],
    'bill':['c','java'],
    'kathy':['java'],
    'john':['c','r','java'],
    'marria':['python','r','c','java']
}
for name,languages in favorite_languages.items():
    if len(languages) >=2:
        print(f"{name.title()}'s favorite languages are:")
        for language in languages:
            print(f"\t{language.title()}")
    elif len(languages) < 2:
        print(f"{name.title()}'s favorite language is:")
        for language in languages:
            print("\t"+language.title())

#在字典中存储字典
users={
    'laora':{'first_name':'kevin','last_name':'smith','country':'america'},
    'sevin':{'first_name':'troye','last_name':'green','country':'france'}
}
for user,information in users.items():
    full_name=f"{information['first_name']} {information['last_name']}"
    location=information['country']
    print(f"{user.title()}'s true name is: {full_name.title()}. \
He is living in {location.title()} now.")
#代码太长换行时,千万记得前面不要留有缩进字符

今天的分享就这么多了。欢迎大家莅临我的另一个草稿箱(公众号:统计小菜椒)

(ps:喜欢暴风雨)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值