码迷,mamicode.com
首页 > 编程语言 > 详细

python基础-字典

时间:2016-05-16 08:16:27      阅读:269      评论:0      收藏:0      [点我收藏+]

标签:python

1:字典:是无序的数据类型,他是由key:value组合。由于无序,所以没有下标获取value。通过:dict[key]来获取元素的value。

当字典的key重复时候,字典会自动去重复的key。

如下:当字典重复的key值时自动保留最后一个重复的key:value:

a={2:‘a‘,2:‘b‘,3:‘c‘}
print(a)
{2: ‘b‘, 3: ‘c‘}

2:字典的key值必须是可hash。字典的value可以是:变量、字典、列表。

name=input(‘what is your name?:‘)
a={
    ‘name‘:name,
    ‘info‘:{‘age‘:22,‘addr‘:‘liaoning‘},
    ‘favorite‘:[‘football‘,‘pingpang‘]
}
print(a)
what is your name?:evil
{‘info‘: {‘addr‘: ‘liaoning‘, ‘age‘: 22}, ‘favorite‘: [‘football‘, ‘pingpang‘], ‘name‘: ‘evil‘}

构造如下字典:

3:字典常用操作:

id_db={
    1133334:{‘name‘:‘evil‘,‘age‘:22,‘addr‘:‘;liaoning‘},
    2334455:{‘name‘:‘tom‘,‘age‘:23,‘addr‘:‘beijing‘}
}
#print  dict id_db.keys
print(id_db.keys())
dict_keys([1133334, 2334455])
#print dict id_db.values
print(id_db.values())
dict_values([{‘age‘: 22, ‘addr‘: ‘;liaoning‘, ‘name‘: ‘evil‘}, {‘age‘: 23, ‘addr‘: ‘beijing‘, ‘name‘: ‘tom‘}])
#打印id_db key值为:2334455的value的小字典的key值为name的value。
print(id_db[2334455][‘name‘])
tom
#删除为key=1133334的元素。
del id_db[1133334]
print(id_db)
{2334455: {‘age‘: 23, ‘addr‘: ‘beijing‘, ‘name‘: ‘tom‘}}
#如果key值为111的元素不村子,那么插入key:value=111:‘jhon‘的元素。
id_db[111]=‘jhon‘
{111: ‘jhon‘, 1133334: {‘addr‘: ‘;liaoning‘, ‘name‘: ‘evil‘, ‘age‘: 22}, 2334455: {‘addr‘: ‘beijing‘, ‘name‘: ‘tom‘, ‘age‘: 23}}
###如果字典中key值存在,那么将覆盖该key值之前的value。
id_db[2334455]=‘joker‘
print(id_db)
{1133334: {‘addr‘: ‘;liaoning‘, ‘age‘: 22, ‘name‘: ‘evil‘}, 2334455: ‘joker‘}

4:如何获取字典的对应的key的value呢?

#常用如下操作:
dict2={
    ‘name‘:‘evil‘,
    ‘age‘:22
}
#如果key在key值不存在的情况下:
#print(dict2[‘addr‘])
#会抛出异常:
#KeyError: ‘addr‘
#为了避免程序出现这种情况。字典本身有个函数get()。可以定义在key值不存在的情况下,不抛出异#常。可以自定义在key值不存在的情况下输出我们定义的value,默认None
print(dict2.get(‘addr‘,‘this key is not exits‘))
this key is not exits

5:如何判断字典的key值是否存在?

可以用 key in dict来判断。

上个字典判断key值123是否在dict2中。
print(123 in dict2)
False

6:字典的setdefault(key,default=value)函数

如果字典相应的key值不存在的情况,会默认插入这个key:value.如果字典相应的key值存在将会输出相应的key:value.如上字典。

dict2.setdefault(‘age‘,‘33‘)
print(dict2)
{‘name‘: ‘evil‘, ‘age‘: 22}
不存在的key值,将会插入到字典当中
dict2.setdefault(‘adrr‘,‘liaoning‘)
print(dict2)
{‘name‘: ‘evil‘, ‘adrr‘: ‘liaoning‘, ‘age‘: 22}
print(dict2.get(‘id‘,‘this is not exits‘))
{‘name‘: ‘evil‘, ‘adrr‘: ‘liaoning‘, ‘age‘: 22}
而get()函数并不修改当key值不存在的情况的下得字典

7:字典的fromkeys()函数。

a={2:‘a‘}
print(a.fromkeys([1,2,3],‘a‘))
print(a)
{1: ‘a‘, 2: ‘a‘, 3: ‘a‘}
{2: ‘a‘}

8:字典的popitem()函数。随机删除一对key:value.

a={8:‘a‘,3:‘b‘,4:‘c‘,5:‘d‘,6:‘r‘}
a.popitem()
print(a)
{3: ‘b‘, 4: ‘c‘, 5: ‘d‘, 6: ‘r‘}##由于元素少,导致没试出来随机删除情况。因为字典本身是无序。所以这种只能随机删除。

9:字典的pop(key,d=None)函数。

指定删除相应的key:value.如果d不设置会报KeyError。

a={8:‘a‘,3:‘b‘,4:‘c‘,5:‘d‘,6:‘r‘}
a.pop(8)
print(a)
{3: ‘b‘, 4: ‘c‘, 5: ‘d‘, 6: ‘r‘}

10:如何输出字典的key和value。

1:

a={8:‘a‘,3:‘b‘,4:‘c‘,5:‘d‘,6:‘r‘}
for k,v in a.items():
    print(k,v)

8 a
3 b
4 c
5 d
6 r
#这种输出字典的key value 效率较低。因为有一个dict to list

高效率的方法:

for k in a:
    print(k,a[k])
8 a
3 b
4 c
5 d
6 r


python基础-字典

标签:python

原文地址:http://8118556.blog.51cto.com/8108556/1773762

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!