Python之字典

what

字典是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值对( key value 对) 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 ,格式如下所示:

dictname = {key1 : value1, key2 : value2, key3 : value3 }

键必须是唯一的,但值则不必。

值可以取任何数据类型,但键必须是不可变的,如字符串,数字。

{ },花括号括起键值对

dict1={}#空字典
dict2 = { 'abc': 123, 98.6: 37 }

dict( ),函数

dict1=dict()
dict2=dict([('Zhang',99), ('王五',87),('Li Si',87)])
print(dict2)#{'Zhang': 99, '王五': 87, 'Li Si': 87}
#dict(以成对元组为元素的列表,且第一个元素可作为字典的键)

#从两个序列生成字典
keys=['a', 'b', 'c']
values=[1, 2, 3]
D1={}
for k, v in zip(keys,values):
    D1[k]=v
print(D1)#{'a': 1, 'b': 2, 'c': 3}
D2=dict(zip(keys,values))
print(D2)#{'a': 1, 'b': 2, 'c': 3}

dict.fromkeys(seq, val=None)函数,创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值

D1 = dict.fromkeys(['a','b','c'], 0)
print(D1)
D2 = dict.fromkeys('abc')
print(D2)
D3 = dict.fromkeys('abc', 0)
print(D3)

###
{'a': 0, 'b': 0, 'c': 0}
{'a': None, 'b': None, 'c': None}
{'a': 0, 'b': 0, 'c': 0}

字典解析式(dict comprehension)

d1={i:i**2 for i in range(1,10)}
print(f"d1={d1}")#d1={1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}

dictname[key], 通过字典的键访问值

D = {'Zhang San':60, '李四':70, 'Wang Wu':80}
print(D['李四'])#70

dictname.get(key, default=None), 不改变原字典

D1=dict([('Zhang',99), ('王五',87),\
        ('Li Si',87)])
print(D1.get('王五'))
print(D1.get('Zhang',-1))
print(D1.get('Ming Wu',100))
print(D1)

###
87
99
100
{'Zhang': 99, '王五': 87, 'Li Si': 87}

dictname.setdefault(key, default=None), 类似于get, 但当key不存在字典时,会将key default值添加到字典,此时会改变原字典。

dict = {'Name': 'Runoob', 'Age': 7}

print ("Age 键的值为 : %s" %  dict.setdefault('Age', None))
print ("Sex 键的值为 : %s" %  dict.setdefault('Sex', None))
print ("新字典为:", dict)

###
Age 键的值为 : 7
Sex 键的值为 : None
新字典为: {'Age': 7, 'Name': 'Runoob', 'Sex': None}

obj in dictname, 只访问字典的键

D1=dict([('Zhang',99), ('王五',87),('Li Si',87)])
print('Zhang' in D1)#True
print('Ming Wu' in D1)# False

dictname[new_key]=new_value

d1=dict()
d1["key"]="value"
print(d1)

###
{'key': 'value'}

1、del dictname[key],删除字典里的键值对。

2、del dictname,删除整个字典。

3、dictname.clear(),清空字典,字典将变为空字典{}

d1=dict.fromkeys(["key1","key2","key3"])
print(d1)
del d1["key2"]
print(d1)
d1.clear()
print(d1)
del d1
print(d1)

###
{'key1': None, 'key2': None, 'key3': None}
{'key1': None, 'key3': None}
{}
NameError: name 'd1' is not defined

dictname[key]=new_value

d1=dict.fromkeys(["key1","key2","key3"])
print(d1)
d1["key2"]=999
print(d1)

###
{'key1': None, 'key2': None, 'key3': None}
{'key1': None, 'key2': 999, 'key3': None}
遍历字典
d1={i:i**2 for i in range(1,10)}
print(f"d1={d1}")
keys=[i for i in d1.keys()]
values=[i for i in d1.values()]
items=[i for i in d1.items()]
print(f"keys={keys}\nvalues={values}\nitems={items}")
print(d1.keys())
print(type(d1.keys()))

###
d1={1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
keys=[1, 2, 3, 4, 5, 6, 7, 8, 9]
values=[1, 4, 9, 16, 25, 36, 49, 64, 81]
items=[(1, 1), (2, 4), (3, 9), (4, 16), (5, 25), (6, 36), (7, 49), (8, 64), (9, 81)]
dict_keys([1, 2, 3, 4, 5, 6, 7, 8, 9])
<class 'dict_keys'>
取出 值 最大的 键

即输出 value 最大的 key。

max(dictname,key=dictname.get)
函数与方法

函数

序号函数及描述实例
1len(dictname) 计算字典元素个数,即键的总数。>>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} >>> len(dict) 3
2str(dictname) 输出字典,以可打印的字符串表示。>>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} >>> str(dict) "{'Name': 'Runoob', 'Class': 'First', 'Age': 7}"
3type(variable) 返回输入的变量类型,如果变量是字典就返回字典类型。>>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} >>> type(dict) <class 'dict'>
序号函数及描述
1radiansdict.clear() 删除字典内所有元素
2radiansdict.copy() 返回一个字典的浅复制
3radiansdict.fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
4radiansdict.get(key, default=None) 返回指定键的值,如果键不在字典中返回 default 设置的默认值
5key in dict 如果键在字典dict里返回true,否则返回false
6radiansdict.items() 以列表返回可遍历的(键, 值) 元组数组
7radiansdict.keys() 返回一个迭代器,可以使用 list() 来转换为列表
8radiansdict.setdefault(key, default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
9radiansdict.update(dict2) 把字典dict2的键/值对更新到dict里
10radiansdict.values() 返回一个迭代器,可以使用 list() 来转换为列表
11pop(key,default=-1) 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
12popitem() 随机返回并删除字典中的最后一对键和值。

参考资料

菜鸟教程 https://www.runoob.com/python3/python3-dictionary.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值