首页 > 其他 > 详细

学习笔记5(第六章:字典)

时间:2019-07-14 20:50:21      阅读:88      评论:0      收藏:0      [点我收藏+]

1、在Python中,字典是一系列键-值对。每个键都与一个值相关联,可以使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。

2、字典用放在花括号{}中的一系列键-值对表示,键和值之间用冒号分隔,键-值对之间用逗号隔开。

3、键-值对的排列顺序与添加顺序不同。Python不关心键-值对的添加顺序,而只关心键和值之间的关联关系。(笔者没有试验成功,但是书上是这样写的)

   创建一个空字典,添加元素:

alien_0 = {}
alien_0[x_position] = 0
alien_0[y_position] = 25
alien_0[speed] = medium
print(alien_0)

   输出的字典键-值顺序依然和添加一样,可能书上所说的是个例。

{x_position: 0, y_position: 25, speed: medium}

4、字典可以存储一个对象的多种信息,也可以用来存储多个对象的同一种信息。

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

green

对于较长的列表和字典,可以分行。

favorite_languages = {
    jier:java,
    juzi:python,
    tz:csharp,
    }
print("jier‘s favourite language is"+
      favorite_languages[jier].title()+
      ".")


jier‘s favourite language isJava.

5、用for循环来遍历字典。注意,遍历字典时,键-值对的返回顺序与存储顺序也不一定相同。

   遍历字典favorite_language:

for name,language in favorite_languages.items():
    print(name.title()+"‘s favourite language is "+
      language.title()+".")

输出结果:

Jier‘s favourite language is Java.
Juzi‘s favourite language is Python.
Tz‘s favourite language is Csharp.

6、遍历字典中的所有键。

for name in favorite_languages.keys():
    print(name.title())

提取键,并存储到name变量中,再输出。遍历字典时,会默认遍历所有的键,因此,keys()方法可以省略,直接 for name in favourite_languages:,输出不变。添加了keys()可以让代码更加容易理解。 

Jier
Juzi
Tz

可以使用keys()确定某个人是否在字典中。

if erin not in favorite_languages.keys():
    print("he isn‘t in ")

7、字典总是明确记录键和值之间的关联关系,但获取字典的元素时获取顺序是不可预测的。可以调用sorted()函数,让Python列出字典中的所有键,并在遍历前对这个列表进行排序。

for name in sorted(favorite_languages.keys()):
    print(name.title()+",thank you")

8、使用方法values(),返回一个值列表,而不包含任何键。这种做法提取字典中所有的值,但没有考虑是否有重复。为剔除重复项,可使用集合(set)。集合类似于列表,但每个元素都必须独一无二。

favorite_languages = {
    jier:java,
    juzi:python,
    tz:csharp,
    xiao:java
    }
for language in set(favorite_languages.values()):
    print(language.title())

输出结果:

Csharp
Java
Python

9、将一系列字典存储在列表中,或将列表存储在字典中,这称为嵌套

   在列表中嵌套字典,使用rang()自动生成30个外星人:

# 创建一个用于存储外星人的空列表
aliens = []

# 创建30个绿色的外星人
for alien_number in range(30):
    new_alien = {color: green, point: 5, speed: slow}
    aliens.append(new_alien)

# 修改前三个外星人
for alien in aliens[0:3]:
    if alien[color] == green:
        alien[color] = yellow
        alien[speed] = medium
        alien[point] = 10

# 显示前五个外星人
for alien in aliens[:5]:
    print(alien)
print("...")

# 显示创建了多少个外星人
print("Total number of aliens:" + str(len(aliens)))

输出结果:

{color: yellow, point: 10, speed: medium}
{color: yellow, point: 10, speed: medium}
{color: yellow, point: 10, speed: medium}
{color: green, point: 5, speed: slow}
{color: green, point: 5, speed: slow}
...
Total number of aliens:30    

10、每当需要在字典中将一个键关联到多个值时,都可以在字典中嵌套一个列表

favorite_languages = {
    jier: [java, ruby],
    juzi: [python, c],
    tz: [csharp],
    xiao: [java, c]
}
for name, languages in favorite_languages.items():
    if len(languages) > 1:
        print("\n" + name.title() + "‘s favourite language are:")
    else:
        print("\n" + name.title() + "‘s favourite language is:")
    for language in languages:
        print("\t" + language.title())

输出结果:

Jier‘s favourite language are:
Java
Ruby

Juzi‘s favourite language are:
Python
C

Tz‘s favourite language is:
Csharp

Xiao‘s favourite language are:
Java
C

 注意,与每个名字相关联的都是一个列表才可以用languages来依次存储字典中的每一个值。否则会得到的结果不是想要的。

11、在字典中存储字典。定义了一个users的字典,其中包含两个键:用户名‘aeinstein’和‘mcurie’。

users = {
    asinstein:{
        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())

  输出结果:

Username:asinstein
    Full name:Albert Einstein
    Location:Princeton

Username:mcurie
    Full name:Marie Curie
    Location:Paris

 

学习笔记5(第六章:字典)

原文:https://www.cnblogs.com/cathycheng/p/11180319.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!