字典
dictionary
1.键值对的集合(map)
2.字典是以大括号“{}”包围的数据集合
3.字典是无序的,在字典中通过键来访问成员。 可变的,可嵌套,可以原处修改扩展等,不产生新的字典
4.字典的键,可以是字符串(大小写敏感),数字常量或元组(不可变类型),同一个字典的键可以混用类型。字典的键必须是可哈希的
元组作为键的条件是,元组内的值都是不可变类型
复制代码 代码如下:
a = (1,2) #可以作为键
b = (1,2,[3,4]) #不可以
5.字典的值可以是任意类型,可以嵌套,可以自由修改
声明
创建字典的几种方式:
1.基本
复制代码 代码如下:
d = {} #空字典
d = {'name':'tom', 'age':22}
#等价
d = {}
d['name'] = 'tom'
d['age'] = 22
2.dict
复制代码 代码如下:
d = dict() #空
d = dict(name='tom', age=22)
d = dict([('name','tom'), ('age',22)])
#等价
keys = ['name','age']
values = ['tom', 22]
d = dict(zip(keys,values))
3.fromkeys
不指定default_value的话,默认None
复制代码 代码如下:
> dict.fromkeys(['name','age'],'default_value')
{'age': 'default_value', 'name': 'default_value'}
基本操作
0.获取帮助
复制代码 代码如下:
help(dict)
1.判定键是否存在于字典中
复制代码 代码如下:
if k in d: #k not in
dosomething()
2.读取
复制代码 代码如下:
d = {'a':1, 'b':2}
print d['a'] #得到1,但是若键不存在,将引发异常KeyError。慎用,建议不使用
print d.get('c', 3) #得到3,get方法,若是键不存在,返回第二个参数default_value.若是没有设default_value返回None
处理missing-key错误三种方式,根据具体需要
复制代码 代码如下:
if k in d:
print d[k]
try:
print d[k]
except KeyError:
dosomething()
print d.get(k, default)
#等价 d[k] if k in d else default
3.遍历
方式1:
复制代码 代码如下:
for key in d:
print key, d[key]
#等价 for key in d.keys()
方式2:
复制代码 代码如下:
for key,value in d.items():
print key, value
4.修改方式1:某个键值对
复制代码 代码如下:
d['key'] = 'newvalue'
方式2:批量添加或更新
复制代码 代码如下:
#另一个字典
d.update({'key':'newvalue'}) #这里支持一整组值
#元组列表
d.update( [ ('a',1), ('b',2) ] ) #每个元组两个元素,(key,value)
#**key
d.update(c=3, e=4)
5.删除
复制代码 代码如下:
del d['key']
value = d.pop('key') #删除并返回值
d.clear() #清空
6.其他:
len(d) #长度
d.keys() #key列表
d.values() #value列表
d.items() #(key, value) 列表
c = d.copy() #浅拷贝
#返回迭代器,节省内存
d.iterkeys()
d.itervalues()
d.iteritems()
d.setdefault('name', 'ken') #若原来没有,设置,否则原值不变
其他
1.字典排序按照key排序
复制代码 代码如下:
keys = d.keys()
keys.sort()
for key in keys:
print d.get(key)
按照value进行排序
复制代码 代码如下:
sorted(d.items(), lambda x,y: cmp(x[1],y[1]))
另外:
复制代码 代码如下:
#假设d为字典
sorted(d) #返回同 sorted(d.keys()),返回的是key排序
2.自定义对象作为key
必须:
复制代码 代码如下:
def __hash__(self):
pass
def __eq__(self, other):
pass
3.字典拷贝浅拷贝:
复制代码 代码如下:
c = d.copy() #
深拷贝必须用copy模块
复制代码 代码如下:
form copy import deepcopy
c = deepcopy(d)
4.一种使用场景假设有一个很大的列表l,假设10w条记录
有一个小列表b,要判断b中元素是否在l中
如果:
复制代码 代码如下:
for i in b:
if i in l:
dosomething()
你会发现非常非常慢...因为第二个in语句,会遍历10w条….
改进:
复制代码 代码如下:
d = dict.fromkeys(l)
for i in b:
if i in d:
dosomething()
#空间换时间,O(n) -> O(1)
字典操作
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 【雨果唱片】中国管弦乐《鹿回头》WAV
- APM亚流新世代《一起冒险》[FLAC/分轨][106.77MB]
- 崔健《飞狗》律冻文化[WAV+CUE][1.1G]
- 罗志祥《舞状元 (Explicit)》[320K/MP3][66.77MB]
- 尤雅.1997-幽雅精粹2CD【南方】【WAV+CUE】
- 张惠妹.2007-STAR(引进版)【EMI百代】【WAV+CUE】
- 群星.2008-LOVE情歌集VOL.8【正东】【WAV+CUE】
- 罗志祥《舞状元 (Explicit)》[FLAC/分轨][360.76MB]
- Tank《我不伟大,至少我能改变我。》[320K/MP3][160.41MB]
- Tank《我不伟大,至少我能改变我。》[FLAC/分轨][236.89MB]
- CD圣经推荐-夏韶声《谙2》SACD-ISO
- 钟镇涛-《百分百钟镇涛》首批限量版SACD-ISO
- 群星《继续微笑致敬许冠杰》[低速原抓WAV+CUE]
- 潘秀琼.2003-国语难忘金曲珍藏集【皇星全音】【WAV+CUE】
- 林东松.1997-2039玫瑰事件【宝丽金】【WAV+CUE】