Python学习笔记(十三):字典(附带《玩具谜题》题解)

字典部分

字典创建与删除

在Python中,“字典”,顾名思义,有一个“字”(在Python中叫“键”),对应地,有一个“释义”(在Python中叫“值”)。

键和值之间用冒号连接;每两个元素之间用逗号分隔。

像这样:

>>> a={'name':'Commander_Wing','age':15}
>>> a
{'name': 'Commander_Wing', 'age': 15}

创建一个空字典:

>>> a={}
>>> a
{}

或者:

>>> a=dict()
>>> a
{}

删除一个字典:

>>> a={1:1,2:2,3:3}    #键和值不一定要是str型哦
>>> del a
>>> a
NameError: name 'a' is not defined

添加键值:

>>> a={}
>>> a['Language']='Python'
>>> a
{'Language': 'Python'}

但是需要注意:

1.这个语句同时适用于修改键值;像这样:

>>> a={'Language': 'C++'}
>>> a['Language']='Python'    #C++表示不高兴
>>> a
{'Language': 'Python'}

2.键值不可以重复!!!

字典元素调用

字典名[键]即可调用。像这样:

>>> a={'number':10}
>>> a['number']
10

 

字典常用方法

1.update()

用update将另一个字典中的元素添加(更新)到一个字典中。

>>> a={'a':1,'b':2}
>>> b={'c':3,'d':4}
>>> a.update(b)
>>> a
{'a': 1, 'b': 2, 'c': 3, 'd': 4}

注意:

当update()括号中的字典中有键与原字典有重复时,以括号中的字典为准更新到原字典中

2.get()

用get获取字典中的元素。与直接调取的区别是,直接调取不存在的键时,会跳出错误;而get()获取时,会返回一个预先设定好的值。

get(key,default=None)

key是键,而defaut是设定的值,默认为None(空)。

>>> a
{'a': 1, 'b': 2, 'c': 3, 'd': 4}

>>> a['z']
KeyError: 'z'

>>> a.get('z','Error')
'Error'

3.items(),keys(),lavues()

用items()获取元素(包括键和值),用keys()获取键,用values()获取值。

>>> a
{'a': 1, 'b': 2, 'c': 3, 'd': 4}

>>> a.items()
dict_items([('a', 1), ('b', 2), ('c', 3), ('d', 4)])

>>> a.keys()
dict_keys(['a', 'b', 'c', 'd'])

>>> a.values()
dict_values([1, 2, 3, 4])

4.setdefault()

用detdefault()返回指定的键所对应的值,若不存在,则添加预先设定好的新元素到字典中。

>>> a
{'a': 1, 'b': 2, 'c': 3, 'd': 4}
>>> a.setdefault('e',5)
5

>>> a.setdefault('a',6)
1                            #如果存在该键,则不进行修改,直接返回。

题解部分

前言

马上现学现用,做一下这道题吧!

原题目:洛谷 P1563

思路

1.用字典储人物以及方向:

2.对于每条线索,进行查找。需要注意的是,要防止指向在字典范围外。

代码实现

照例声明:抄袭、复制代码是非常恶劣的行为。此类行为将会导致您成为作弊者。代码仅供参考

n,m=map(int,input().split())
people=dict()
for i in range(n):
    side,job=map(str,input().split())
    side=int(side)
    people[i]=[side,job]
p=0
for i in range(m):
    a,b=map(int,input().split())
    if people[p][0]==1:
        if a==0:
            p+=b
        if a==1:
            p-=b
    elif people[p][0]==0:
        if a==0:
            p-=b
        if a==1:
            p+=b
    if p>=n:
        p-=n
    elif p<0:
        p+=n
print(people[p][1])

猜你喜欢

转载自blog.csdn.net/Commander_WingT/article/details/89739071