栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python字典

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python字典

6.1一个简单的字典

alien_0 = {"color": "green", "point": 5}
print(alien_0["color"])
print(alien_0["point"])

6.2使用字典

字典是一系列键值对,每个键斗鱼一个值相关联,我们可以使用键来访问相关联的值。与键相关联的值可以使数,字符串,列表乃至字典。

在python中,字典用放在花括号{}中的一系列键值对表示:

alien_0 = {"color": "green", "point": 5}   #color是一个键,其后面对应数值

6.3访问字典中的值

alien_0 = {"color": "green", "point": 5}
print(alien_0["color"])

6.2.2添加键值对

字典是一种动态结构,可随时在其中添加键值对

alien_0 = {"color": "green", "point": 5}
print(alien_0["color"])
print(alien_0["point"])
alien_0["x_position"] = 0        #设置外星人初始的x与y坐标
alien_0["y_position"] = 25
print(alien_0)

这个字典的最终结果新增了两个键值对

{'color': 'green', 'point': 5, 'x_position': 0, 'y_position': 25}

6.2.3先创建一个空字典

alien_1 = {}
alien_1["color"] = "green"
alien_1["points"] = 5
print(alien_1)

6.2.4修改字典中的值

要修改字典中的值,可依次指定字典名、用方括号括起的键,以及与该键相关联的新值

alien_1["color"] = "yellow"
print(alien_1["color"])

#对以不同速度移动的外星人进行跟踪

alien_2 = {"x_position": 0, "y_position": 25, "speed": "medium"}
print(f"Original x_position:{alien_2['x_position']}")
# 向右移动外星人
# 根据当前速度确定将外星人向右移动多远
if alien_2["speed"] == "slow":
    x_increment = 1
elif alien_2["speed"] == "medium":
    x_increment = 2
else:
    x_increment = 3
alien_2["x_position"] = alien_2["x_position"] + x_increment
print(alien_2["x_position"])

6.2.5删除键值对

对于字典中不需要的信息,可使用del语句将相应的键值对彻底删除、使用del语句时,必须指定字典名和要删除的键。

alien_0 = {"color": "green", "points": 5}
print(alien_0)
del alien_0["points"]
print(alien_0)                #删除的键值对会永远消失

6.2.6由类似对象组成的字典

也可以使用字典来存储众多对象的同一种信息,例如存储每个人最喜欢的编程语言

favorite_language ={
    "jen": "python",
    "sarah": "c",
    "edward": "ruby",
    "phil": "python"
}   #对于较长的字典,可通过这种方式进行格式设置

给定被调查者的名字,可使用这个字典轻松地获取她喜欢的语言:

language = favorite_language['sarah'].title()
print(language)

5.2.7使用get来访问值

如果指定的键不在字典内,那程序可能就会出错

可使用方法get()在指定的键不存在时返回一个默认值,从而避免这样的错误。

get() 该方法第一个参数用于指定键,第二个参数为指定的键不存在时要返回的值,是可选的

point_value = alien_0.get("point", "No point value assigned")
print(point_value)

#如果get()没有指定第二个参数,则会返回值None

6.3遍历字典

6.3.1遍历所有键值对

user_0 = {
    "username": "efermi",
    "first": "enrico",
    "last": "fermi",
}
for key,value in user_0.items():    #提取键值
    print(f"nKey: {key}")
    print(f"Value:{value}")

6.3.2遍历字典中的所有键

user_0 = { 
        "username": "efermi", 
        "first": "enrico", 
        "last": "fermi", 
}
for key in user_0.keys():           #提取键
    print(f"nKey: {key}")

for key in user_0.keys(): #提取键 print(f"nKey: {key}")

favorite_language ={
    "jen": "python",
    "sarah": "c",
    "edward": "ruby",
    "phil": "python",
}
friend = ["phil", "sarah"]
for name in favorite_language.keys():
    print(f"Hi,{name.title()}")
    if name in friend:
        language = favorite_language[name].title()
        print(f"{name.title()},I see you love {language}")

6.3.3按特定顺序遍历字典中的所有键

#使用sorted()方法对键值在遍历之前进行排序,排序是按顺序显示了所有被调查者的名字
favorite_language ={
    "jen": "python",
    "sarah": "c",
    "edward": "ruby",
    "phil": "python",
}
for name in sorted(favorite_language.keys()):
    print(f"{name.title()},thank you for taking the poll")

6.3.4遍历字典中的所有值

#使用.value()方法获取值结果
favorite_language ={
    "jen": "python",
    "sarah": "c",
    "edward": "ruby",
    "phil": "python",
}
for name in favorite_language.values():
    print(name.title())

按照上述做法可以提取字典中的值,但没有考虑数据重复的问题,当数据量比较庞大时,我们可以使用集合(set)来剔除重复项。集合set中的每个元素都是独一无二的

favorite_language ={
    "jen": "python",
    "sarah": "c",
    "edward": "ruby",
    "phil": "python",
}
for language in set(favorite_language.values()):
    print(language.title())

练习6-5

rivers = {
    "Yellow River": "China",
    "Xuanwu_lake": "nanjing",
    "nile": "egypt",
}
for name, value in rivers.items():
    print(f"The {name} runs through {value}n")
for name in rivers.keys():
    print(name)
for value in rivers.values():
    print(value)

练习6-6

favorite_language = {
    "jen": "python",
    "sarah": "c",
    "edward": "ruby",
    "phil": "python",
}
visit = ["jen", "edward"]
for number in favorite_language.keys():
    if number in visit:
        print("Thanks")
    else:
        print("I invite you to accept our survey")

6.4嵌套

有时候,需要将一系列字典存储在列表中,或将列表作为值存储在字典中,这称为嵌套。

6.4.1字典列表

将一堆外星人字典放入列表中存储

alien_0 = {"color": "green", "points": 5}
alien_1 = {"color": "yellow", "points": 10}
alien_2 = {"color": "red", "points":15}
aliens = [alien_0, alien_1, alien_2]
for alien in aliens:
    print(alien)

示例:使用range()生成30个外星人

# 创建一个用于存储外星人的空列表
aliens = []
# 创建30个绿色的外星人
for alien_number in range(30):
    new_alien = {"color": "green", "points": "slow"}
    aliens.append(new_alien)
# 显示前五个外星人
for alien in aliens[:5]:
    print(alien)
print("...")
# 显示创建了多少外星人
print(len(aliens))
# 要将前三个外星人修改为黄色、速度为中等且值为10分
for alien in aliens[:3]:
    if alien["color"] == "green":
        alien["color"] = "yellow"
        alien["speed"] = "medium"
        alien["points"] = 10
    elif alien["color"] == "yellow":
        alien["color"] = "red"
        alien["speed"] = "fast"
        alien["points"] = "15"

6.4.2在字典中存储列表

在下面的示例中,存储了pizza的两方面信息:外皮类型以及配料列表。其中,配料列表是一个与键“toppings”相关联的值。
# 存储所点的pizza信息
pizza = {
    "crust": "thick",
    "toppings": ["mushrooms", "extra cheese"],
}
# 概述所点的pizza
print(f"You ordered a {pizza['crust']}-crust pizza"
    " with the following toppings: ")
for topping in pizza["toppings"]:
    print("t"+topping)

对于之前说的用户喜欢的开发语言,现在每个被调查者所关联的可以不止是一种语言,而可能是一组语言。

favorite_language = {
    "jen": ["python", "ruby"],
    "sarah": ["c"],
    "edward": ["ruby", "go"],
    "phil": ["python", "haskell"],
}
for name, languages in favorite_language.items():
    print(f"{name.title()}'s favorite lauguages are:")
    for language in languages:
        print(language.title())

6.4.3在字典中存储字典

例如,每个网站用户都有一个独特的用户名,可在字典中将用户名作为键,将每个用户的信息作为字典并分别与键关联。

users ={
    "aeinstein":{
        "first": "albert",
        "last": "einstein",
        "location": "princeton",
    },
    "mcurie":{
        "first": "marie",
        "last": "curie",
        "location": "paris",
    },
}
for user_name, info in users.items():
    print(f"User_name: {user_name}")
    full_name = f"{info['first']} {info['last']}"
    loc = info["location"]
    print(full_name)
    print(loc)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/339089.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号