Python笔记-010-字典

1.10.1 字典
在Python中 字典是一系列键值对,每个键都与一个值相关联。
注意:键跟值之间用冒号分隔,你存储多少个键值都是可以的。
访问字典里面值的格式如下

alien_0={'color':'green'}
print(alien_o['color']

1)动态增加键值对的代码如下:

alien_0={}
alien_0['y_position']=25
alien_0['x_position']=0
alien_0['color']='green'
alien_0['point']=10
print(alien_0)

{‘color’: ‘green’, ‘y_position’: 25, ‘point’: 10, ‘x_position’: 0}
2)修改字典中的值

alien_0={'color':'green'} #建立字典的时候用的是大括号而不是中括号
print("The alien color is : "+alien_0['color']+".") #取字典的时候用的是中括号

alien_0['color']='Yellow'
print("The alien color is : "+alien_0['color']+".")

The alien color is : green.
The alien color is : Yellow.

如果在游戏中 对一个能够以不同速度移动的外星人的位置进行跟踪。我们应该存储外星人当前的速度,并且根据此确定该外星人将向右移动多远:


alien_0={'x_position':0,'y_position':25,'speed':'medium'}
print("Original x-position:"+str(alien_0['x_position']))

if  alien_0['speed']=='slow':  #如果判断到速度为slow的话就是对应着速度步进+1
    x_increment=1
elif alien_0['speed'] == 'medium': #如果判断到速度为medium的话就是对应着速度步进+2
    x_increment=2
else:                             #除此之外速度肯定很快
    x_increment=3

alien_0['x_position']=alien_0['x_position']+x_increment
print("New x_position:"+str(alien_0['x_position']))

Original x-position:0
New x_position:2
我们可以直接通过调用:alien_0[‘speed’]中的值改变外星人的速度。

3)删除键值对
我们如果不需要用到字典中的元素了的话 我们可以直接使用之前学到的命令: del
进行删除,代码如下,重温一下:

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

{‘point’: 5, ‘color’: ‘green’}
{‘color’: ‘green’}

**注:输出的列表顺序跟我们定义的列表定义不同
Python不关心键值对存储顺序,而只是跟踪键和值之间的关联关系。**

1.10.2 遍历所有的键值—-对
Python 字典(Dictionary) items() 函数以列表返回可遍历的(键, 值) 元组数组。

dicts={
     'del':'删除',
     'append':'增加',
     'insert':'插入',
     'puts':'输出',
     'inputs':'输入',
}
for key,value in dicts.items():
     print(key+':'+value)

del:删除
inputs:输入
insert:插入
append:增加
puts:输出

1.10.3 遍历字典中的所有键

在我们不需要使用字典中的值的时候,方法keys()很有用。

favorite_languages={
    'jen':'python',
    'sarah':'c',
    'edward':'rubby',
    'phil':'python',
}
for name in favorite_languages.keys():#遍历字典时候,会默认遍历所有的键值,出于更好理解 建议用keys()
        print(name.title())
print("\n")
for name in favorite_languages:#这两条语句的输出结果都是一样的
        print(name.title())

Jen
Phil
Edward
Sarah

Jen
Phil
Edward
Sarah

favorite_languages={
    'jen':'python',
    'sarah':'c',
    'edward':'rubby',
    'phil':'python',
}
friend=['phil','sarah']
for name in favorite_languages.keys():
     print(name.title())
     if name in friend:
         print("Hi"+name.title()+",I see your favorite language is "+favorite_languages[name].title()+"!")

**Python脚本运行出现语法错误:IndentationError: unindent does not match any outer indentation level:
1.对于此错误,最常见的原因是,的确没有对齐。但是我根据错误提示的行数,去代码中看了下,没啥问题啊。
都是用TAB键,对齐好了的,没有不对齐的行数啊。**

*1.10.4 按顺序遍历字典中的所有值

favorite_languages={
    'jen':'python',
    'sarah':'c',
    'edward':'rubby',
    'phil':'python',
}
friend=['phil','sarah']
for name in sorted(favorite_languages.keys()):
     print(name.title())

Edward
Jen
Phil
Sarah

1.10.3 遍历字典中的所有值
既然可以只读字典里面的键,那么就也一样可以都字典里面的值:

favorite_languages={
    'jen':'python',
    'sarah':'c',
    'edward':'rubby',
    'phil':'python',
}
friend=['phil','sarah']
for name in favorite_languages.values():
     print(name.title())

Python
Python
C
Rubby
从结果我们可以看到 达到我们的目的了 把字典里所有的值都读出来了,但是我们同时也可以发现,python出现两次,有些时候 我们需要的只是不重复的值,剔除重复,python的另一个函数就可以达到目的了set()

favorite_languages={
    'jen':'python',
    'sarah':'c',
    'edward':'rubby',
    'phil':'python',
}
friend=['phil','sarah']
for name in set(favorite_languages.values()):
     print(name.title())

C
Python
Rubby
强大的python的一些函数 在我们处理数据的时候能起到很大的作用

**课后练一练
6-4**

dicts={
     'del':'删除',
     'append':'增加',
     'insert':'插入',
     'puts':'输出',
     'inputs':'输入',
}
for key,value in dicts.items():
     print(key+':'+value)

print("\n")
dicts['if']='如果'
dicts['print']='打印'
dicts['set']='集合'
dicts['sorted']='排序'
dicts['else']='否则'
for key,value in dicts.items():
     print(key+':'+value)

del:删除
inputs:输入
puts:输出
insert:插入
append:增加

del:删除
inputs:输入
else:否则
set:集合
append:增加
if:如果
sorted:排序
puts:输出
insert:插入
print:打印

6-5

rivers = {'Nile': 'egypt', 'Changjiang': 'china', 'Huanghe': 'china'}
for river,country in rivers.items():
    print(river+"run through "+country)
for river in rivers.keys():
    print(river)
for country in rivers.values():
    print(country)

6-6

peoples={'jen','Harjerk','Jack','bruse','phil'}
for name in favorite_languages.keys():
    if name in peoples:
        print("Hi"+name.title()+",Thank you very much!")
    else:
        print(name.title()+", Please take our poll!")

1.10.4 嵌套
有时候,需要将一系列字典存储在列表中,或者将列表中作为值存储在字典中,这称为嵌套
1)字典列表
比如我们一个字典只包含一个外星人的信息,但是无法存储第二个外星人的信息。我们可以跟下面的一样,想办法创建一个外星人列表

alien_0={'color':'green','point':5}
alien_1={'color':'red','point':6}
alien_2={'color':'yellow','point':7}
aliens=[alien_0,alien_1,alien_2]
for alien in aliens:
    print(alien)

但是我们现实中,我们的外星人不止三个,且每个外星人都是用代码自动生成的。

aliens=[]
for alien_number in range(30): #rang 范围 30个数
    new_alien={'color':'green','point':5,'speed':'slow'}
    aliens.append(new_alien)

for alien in aliens[:5]:#切片的知识,只显示前5个信息
    print(alien)
print("...")
print("Total number of aliens :" +str((len(aliens))))

{‘speed’: ‘slow’, ‘point’: 5, ‘color’: ‘green’}
{‘speed’: ‘slow’, ‘point’: 5, ‘color’: ‘green’}
{‘speed’: ‘slow’, ‘point’: 5, ‘color’: ‘green’}
{‘speed’: ‘slow’, ‘point’: 5, ‘color’: ‘green’}
{‘speed’: ‘slow’, ‘point’: 5, ‘color’: ‘green’}

Total number of aliens :30

2)当我们需要更改外星人的颜色还有外星人速度以及得分的时候 可以通过下面的程序来参考更改:

aliens=[]
for alien_number in range(30): #rang 范围 30个数
    new_alien={'color':'green','point':5,'speed':'slow'}
    aliens.append(new_alien)    #循环30次把 外星人的信息全部添加进去
for alien  in aliens[0:3]:          # 循环前3组变量
      if alien['color']=='green':   #进入循环后判断机器人的颜色是否是绿色的,是的话进行修改
         alien['color'] ='yellow'   #赋值相关的参数
         alien['point'] = '10'
         alien['point'] = 'medium'

for alien in aliens[:5]:#切片的知识,只显示前5个信息
    print(alien)
print("...")
print("Total number of aliens :" +str((len(aliens))))

1.10.4 在字典中存储列表

for name,languages in favorite_languages.items():
      if len(languages)==1:
             print("\n" + name.title() + "'s favorite languages is:")
      else :
             print("\n" + name.title() + "'s favorite languages are:")
      for language in languages:
                 print("\t" + language.title())

猜你喜欢

转载自blog.csdn.net/qq_35989861/article/details/81609417
今日推荐