在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])