Python字典

字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。

理解字典的最佳方式是把它看做无序的键: 值对 (key:value 对)集合,键必须是互不相同的(在同一个字典之内)。一对大括号创建一个空的字典: {} 。

字典的两大特点:无序,键唯一

字典的输出是无序的,顺序不固定

字典的表示形式:

{'guido': 4127, 'jack': 4098, 'sape': 4139}

字典的key必须是不可变的数据类型,比如整型,字符串,元组。

1.创建

dict() 构造函数可以直接从 key-value 对中创建字典:

>>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
{'sape': 4139, 'jack': 4098, 'guido': 4127}

字典推导式可以从任意的键值表达式中创建字典:

>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}

如果关键字都是简单的字符串,有时通过关键字参数指定 key-value 对更为方便:

>>> dict(sape=4139, guido=4127, jack=4098)
{'sape': 4139, 'jack': 4098, 'guido': 4127}

2.增和改

setdefault方法若键不存在,增加相应的键值对,并返回对应的值;若键已存在,则不改动,返回字典中相应的键对应的值

1 dic = {'name': 'chen','age': '22'}
2 dic['name'] = 'chen'
3 dic['age'] = '22'
4 print(dic)
5 
6 a = dic.setdefault('name', 'liu')
7 b = dic.setdefault('sex', 'male')
8 print(a, b)
9 print(dic)

输出为

{'name': 'chen', 'age': '22'}
chen male
{'name': 'chen', 'sex': 'male', 'age': '22'}

改值的话与赋值相同,若相应的key已有对应值,后来的会覆盖前边的值。

使用update()方法修改

1 f = {'age': '22', 'name': 'chen', 'sex': 'male'}
2 g = {'age': 100,'hobby':'girl'}
3 f.update(g)
4 print(f)

输出为

{'age': 100, 'hobby': 'girl', 'sex': 'male', 'name': 'chen'}

3.查

 print('name' in dic)     #判断相应的key在不在字典中
 print(dic.get('name'))   #查找相应key对应的值,不存在返回None
dic.get('name', 'liu')      # 不存在则返回'liu',存在则返回相应的值
 print(dic['name'])       #查找相应key对应的值,不存在则会报错

输出

True
chen
chen

keys()方法输出字典里所有的key

values()方法输出字典里所有的值

items()方法输出字典里所有的键值对

三者输出的值都是特殊格式的,可以用list()命令转化为列表

1 print(dic.keys())
2 print(dic.values())
3 print(dic.items())
4 print(list(dic.items()))

输出为

1 dict_keys(['sex', 'age', 'name'])
2 dict_values(['male', '22', 'chen'])
3 dict_items([('sex', 'male'), ('age', '22'), ('name', 'chen')])
4 [('sex', 'male'), ('age', '22'), ('name', 'chen')]

4.删

del 方法删除指定的键值对

popitem()方法随机删除一个键值对,并返回删除的键值对

pop() 方法删除指定的key的键值对,并返回相应的值

1 a = dic.popitem()
2 print(a, dic)
3 print(dic.pop('name'))
4 print(dic)

当popitem()删除的不是'name'时

('sex', 'male') {'age': '22', 'name': 'chen'}
chen
{'age': '22'}

clear()方法清空字典

5.其他操作

字典的嵌套与列表相似,也使用多个[]来表示

 dict.formkeys()方法建立一个字典

d1 = dict.fromkeys(['host1', 'host2', 'host3'], 'win')
print(d1)

d1['host1'] = 'app'
print(d1)

d2 = dict.fromkeys(['host1', 'host2', 'host3'], ['win', 'mac'])
print(d2)
d2['host1'][0] = 'app'
print(d2)

输出为

{'host1': 'win', 'host3': 'win', 'host2': 'win'}
{'host1': 'app', 'host3': 'win', 'host2': 'win'}
{'host1': ['win', 'mac'], 'host3': ['win', 'mac'], 'host2': ['win', 'mac']}
{'host1': ['app', 'mac'], 'host3': ['app', 'mac'], 'host2': ['app', 'mac']}

sorted(dict)返回一个有序的包含字典中所有key的列表

f = {'age': '22', 'name': 'chen', 'sex': 'male'}
print(sorted(f))

输出为

['age', 'name', 'sex']

字典的遍历,用for循环实现

1 f = {'age': '22', 'name': 'chen', 'sex': 'male'}
2 
3 for i in f:
4     print(i, f[i])
5 for items in f.items():
6     print(items)
7 for keys, values in f.items():
8     print(keys, values)

输出为

1 age 22
2 name chen
3 sex male
4 ('age', '22')
5 ('name', 'chen')
6 ('sex', 'male')
7 age 22
8 name chen
9 sex male

 特殊地:格式化字符串操作

'%(name)s:%(score)s' % {'score':9.5, 'name':'newsim'}  

这种形式只用在要输出的内容为dictionary(一种python格式化的数据类型)时,小括号中的(name)和(score)对应于后面的键值对中的键。

输出为

newsim: 9.5

  

 

转载于:https://www.cnblogs.com/bw13/p/5803779.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值