python - 内置类型 之 dict字典

目录

一、python字典基础

1.字典常用操作

2.字典函数合集

3.字典结构形式

4.字典与列表、元组、集合

5.字典遍历

6.字典交并差集

7.字典推导式

8.常用属性与方法

9.Python字典方法

二、defaultdict字典

1.defaultdict优点

2.语法参数案例

三、自定义函数作为字典值

1.注意事项:

2.实现代码简化

3.案例


 

一、python字典基础

1.字典常用操作

  • # list(d):返回字典 d 中使用的所有键的列表。
  • # len(d):返回字典 d 中的项数。
  • # d[key]:返回 d 中以 key 为键的项。 如果映射中不存在 key 则会引发 KeyError。
  • # d[key] = value:将 d[key] 设为 value。
  • # del d[key]:将 d[key] 从 d 中移除。 如果映射中不存在 key 则会引发 KeyError。
  • # key in d:如果 d 中存在键 key 则返回 True,否则返回 False。
  • # key not in d:等价于 not key in d。
  • # iter(d):返回以字典的键为元素的迭代器。 这是 iter(d.keys()) 的快捷方式。

 

2.字典函数合集

(1)dict.clear()

删除字典所有元素

(2)dict.copy()

返回字典的浅复制

(3)dict.fromkeys(seq[, val])

创建新字典,seq中元素做字典的键,val 为所有键的初始值

(4)dict.get(key, None)

返回指定键的值,如果值不在字典中返回None值

(5)dict.has_key(key)

如果键在字典dict里返回true,否则返回false

(6)dict.items()

以列表返回可遍历的(键, 值) 元组数组

(7)dict.keys()

以列表返回一个字典所有的键

(8)dict.setdefault(key, default=None)

和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default

(9)dict.update(dict2)

把字典dict2的键/值对更新到dict里

(10)dict.values()

以列表返回字典中的所有值

(11)pop(key[,default])

删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。

(12)popitem()

随机返回并删除字典中的一对键和值。

 

3.字典结构形式

dict1 = {key1 : value1, key2 : value2 }

(1)key为键,value为值; 同一字典键不能重复,否则后者会覆盖前者

(2)字典是无序的

 

4.字典与列表、元组、集合

(1)列表:list1= ['value1','value2']

有序,内容可增删改查,value可重复

(2)字典:dict1 = {key1 : value1, key2 : value2 }

无序,内容可增删改查,key不能重复,value可重复

(3)元组:tuple1 = ('value1','value2')

有序,内容可增删查,不可修改,value可重复

(4)集合:set1 = set('value1','value2')

无序,内容可增删查,不可修改,value不可重复

 

5.字典遍历

(1)遍历key值
a={'a': '1', 'b': '2', 'c': '3'}
for key in a:
   print(key+':'+a[key]

for key in a.keys():
       print(key+':'+a[key])                  
在使用上,for key in a和 for key in a.keys():完全等价。
         
(2)遍历value值
for value in a.values():
    print(value)

(3)遍历字典项
for kv in a.items():
    print(kv)
('a', '1')
('b', '2')
('c', '3')

(4)遍历字典健值
for key,value in a.items():
    print(key+':'+value)

for (key,value) in a.items():
    print(key+':'+value)
a:1
b:2
c:3

 

6.字典交并差集

(1)并集
dict1 = { "name":"owen", "age": 18 }
dict2 = { "birthday": "1999-11-22", "height": 180 }
dict3={"key1":"cat","key2":"dog"}
dictMerged2 = dict( dict1, **dict2,**dict3)
或
dictMerged2.update( dict2 )

(2)交集
merge_dict={ key1:dict1[key1] for key1 in dict1.keys()& dict2.keys()}

(3)差集
merge_dict={ key1:dict1[key1] for key1 in dict1.keys()-dict2.keys()}

(4)对称差集
m1={ key1:dict1[key1] for key1 in dict1.keys()-dict2.keys()}
m2=({ key1:dict2[key1] for key1 in dict2.keys()-dict1.keys()})
m1.update(m2)
print(m1)

 

7.字典推导式

key_list=['a','b','c']

value_list=[1,2,3]

mcase_frequency = {k:v for k, v in zip(key_list,value_list)}

print(mcase_frequency)

#{'a': 1, 'b': 2, 'c': 3}

doc_dict={line[0]:line[1] for line in doc_list}

 

8.常用属性与方法

del dict['Name'] # 删除键 'Name'

dict.clear() # 清空字典

del dict # 删除字典

 

9.Python字典方法

(1)dict.clear()  删除字典元素与清空
del dict['Name']    # 删除键 'Name'
dict.clear()           # 清空字典
del dict                # 删除字典

(2)dict.copy() 返回一个字典的浅复制
#!/usr/bin/python3
dict1 = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
dict2 = dict1.copy()
print ("新复制的字典为 : ",dict2)

(3)fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
dict.fromkeys(seq[, value]))
seq -- 字典键值列表。
value -- 可选参数, 设置键序列(seq)的值。

seq = ('name', 'age', 'sex')
dict = dict.fromkeys(seq)
print ("新的字典为 : %s" %  str(dict))
dict = dict.fromkeys(seq, 10)
print ("新的字典为 : %s" %  str(dict))

(4)get() 函数返回指定键的值,如果值不在字典中返回默认值
dict.get(key, default=None)
key -- 字典中要查找的键。
default -- 如果指定键的值不存在时,返回该默认值值。
dict = {'Name': 'Runoob', 'Age': 27}
print ("Age 值为 : %s" %  dict.get('Age'))
print ("Sex 值为 : %s" %  dict.get('Sex', "NA"))

(5)has_key() 字典 in 操作符用于判断键是否存在于字典中,如果键在字典dict里返回true,否则返回false。
key in dict
key -- 要在字典中查找的键。 
dict = {'Name': 'Runoob', 'Age': 7}
# 检测键 Age 是否存在
if  'Age' in dict:
    print("键 Age 存在")
else :
    print("键 Age 不存在")

(6)items() 方法以列表返回可遍历的(键, 值) 元组数组
dict.items()
以下实例展示了 items() 方法的使用方法:
dict = {'Name': 'Runoob', 'Age': 7}
print ("Value : %s" %  dict.items())

(7)keys() 方法以列表返回一个字典所有的键
dict.keys()
以下实例展示了 dict.keys() 方法的使用方法:
#!/usr/bin/python3
dict = {'Name': 'Runoob', 'Age': 7}
print ("字典所有的键为 : %s" %  dict.keys())

(8)setdefault() 方法和get()方法类似, 如果键不已经存在于字典中,将会添加键并将值设为默认值。
dict.setdefault(key, default=None)
key -- 查找的键值。
default -- 键不存在时,设置的默认键值。
#!/usr/bin/python3
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}

(9)update() 函数把字典dict2的键/值对更新到dict里。
dict.update(dict2) 
dict2 -- 添加到指定字典dict里的字典。
以下实例展示了 update()函数的使用方法:
#!/usr/bin/python3
dict = {'Name': 'Runoob', 'Age': 7}
dict2 = {'Sex': 'female' }
dict.update(dict2)
print ("更新字典 dict : ", dict)

以上实例输出结果为:
更新字典 dict :  {'Sex': 'female', 'Age': 7, 'Name': 'Runoob'}

(10)values() 方法以列表返回字典中的所有值
dict.values()
以下实例展示了 values() 方法的使用方法:
#!/usr/bin/python3
dict = {'Sex': 'female', 'Age': 7, 'Name': 'Zara'}
print ("字典所有值为 : ",  list(dict.values()))

以上实例输出结果为: 
字典所有值为 :  ['female', 'Zara', 7]

(11)pop() 方法删除字典给定键 key 所对应的值,返回值为被删除的值
>>> site= {'name': '菜鸟教程', 'alexa': 10000, 'url': 'www.runoob.com'}
>>> pop_obj=site.pop('name')
>>> print(pop_obj)
菜鸟教程

(12) popitem() 随机返回并删除字典中的一对键和值(一般删除末尾对)
#!/usr/bin/python3
site= {'name': '菜鸟教程', 'alexa': 10000, 'url': 'www.runoob.com'}
pop_obj=site.popitem()
print(pop_obj)   
print(site)

输出结果为:
('url', 'www.runoob.com')
{'name': '菜鸟教程', 'alexa': 10000}

 

二、defaultdict字典

1.defaultdict优点

调用dict不存在的key的时会引起KeyError报错,使用defaultdict则不会,而是返回默认值

 

2.语法参数案例

dict =defaultdict( factory_function)

factory_function是list、set、str等,作用是当key不存在时,返回默认值,

list默认为[ ],str是空字符串,set对应set( ),int对应0

案例:

from collections import defaultdict
s = [('red', 1), ('blue', 2), ('red', 3)]
d = defaultdict(set)
for k, v in s:
    d[k].add(v)
print(d)

 

三、自定义函数作为字典值

 # 函数作为字典的值

1.注意事项:

字典里函数名不加括号,调用时在字典后加括号dickey

 

2.实现代码简化

# 当需要用到3个及以上的if...elif...else时就要考虑该方法进行简化

# 通过将函数名称当做字典的值,利用字典的关键字查询,可以快速定位函数,进行执行

 

3.案例

def a():
    print('aa')

def b():
    print('bb')

dic = {1:a,2:b}

#调用函数a()
dic[1]()

#结果:
aa
#通过用户输入来选择执行的函数
cmd = input('输入像要调用函数的key:\n')
dic[int(cmd)]()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值