【python学习】python字典类型

中国史之【炎帝神农氏尝百草】:
中国上古时期姜姓部落的首领尊称,号神农氏,又称烈山氏。相传“神农尝百草”,教人医疗与农耕,中国人视之为传说中的农业和医药的发明者、守护神。在我国的川、鄂、陕交界传说是神农尝百草的地方,称为神农架山区。
-来源:全历史APP

今天讲python的字典类型,字典和列表是最常用的两种数据类型之二。有需要的也可以直接去我的github查看全部笔记:
https://github.com/JackKoLing/python_notes_with_ten_days
【python学习】python字典类型_第1张图片
俗话说:“好记性不如烂笔头”,多写写多记记,总不会错。多一些不为什么的坚持,少一些功利主义的追求。
对于环境的配置,可以参考以下两篇:

  • win10版 @小保,公众号:CV之道
    【深度学习环境配置】手把手实战配置深度学习环境(win10版)
  • Linux版 @小保,公众号:CV之道
    【深度学习环境配置】手把手实战配置深度学习环境(Ubuntu20.04版)。

1 字典类型:dict

  • 表达式符号:{}
  • 字典在其他编程语言中又称作关联数组或散列表

2 特点

  • 通过键(key)实现元素存取
  • 无序集合
  • 可变类型容器,所以长度可变,支持异构和嵌套

3 形式

  • {key1:value1, key2:value2, …}
  • {}:空字典
d1 = {'x':32, 'y':[1, 2, 3, 4]}
print(d1['y'])
print(d1['y'][1:])
>>> 
[1, 2, 3, 4]
[2, 3, 4]

注:>>>表示output,下同。

len(d1)
>>>
2

d1['x'] = 504
print(d1)
>>>
{'x': 504, 'y': [1, 2, 3, 4]}

4 内置函数

d1.clear() # 清空字典的元素
print(d1, len(d1))
>>>
{} 0

d1 = {'x': 504, 'y': [1, 2, 3, 4]}
d2 = d1.copy()
print(d2)
>>>
{'x': 504, 'y': [1, 2, 3, 4]}

d3 = d1
print(d3)
print(id(d1), id(d2), id(d3)) # 可见使用copy函数是创建新字典对象,而直接复制是指向同一对象
>>>
{'x': 504, 'y': [1, 2, 3, 4]}
2673290029528 2673290030608 2673290029528
help(dict.fromkeys)
>>>
Help on built-in function fromkeys:

fromkeys(iterable, value=None, /) method of builtins.type instance
    Create a new dictionary with keys from iterable and values set to value.
    

d4 = dict.fromkeys((1, 2, 3), 'go') # 创建新的字典,其中参数1为key,参数2为value,默认是None
print(d4)
>>>
{1: 'go', 2: 'go', 3: 'go'}
print(d1.get('x')) # 获取参数对应的value
print(d1.get('k')) # 如果没有该键,也不会抛出异常。但是你用d1['k']就会有异常
>>>
504
None
print(help(dict.items))
print('\n')
print(d1.items()) # 返回列表,其中元素为二元元组。也就是字典变为元组列表
t1, t2 = d1.items() # 这种也叫变量解包
print(t1)
print(t2)
>>>
Help on method_descriptor:

items(...)
    D.items() -> a set-like object providing a view on D's items

None


dict_items([('x', 504), ('y', [1, 2, 3, 4])])
('x', 504)
('y', [1, 2, 3, 4])
m1, m2 = {'x':1, 'y':2} # 注意这个字典解包导出的是key,而不是value
print(m1)
print(m2)
>>>
x
y

print(d1.items()) # 返回键-值的元组列表
print(d1.keys()) # 返回键列表
print(d1.values()) # 返回值列表
>>>
dict_items([('x', 504), ('y', [1, 2, 3, 4])])
dict_keys(['x', 'y'])
dict_values([504, [1, 2, 3, 4]])

print(d1.pop('x')) # 弹出键为参数的value值
print(d1)
>>>
504
{'y': [1, 2, 3, 4]}
d2 = {'x':1, 'y':2, 'z':3}
print(d2.popitem()) # 弹出最后一个(也许是随机弹出)键-值元组
print(d2.popitem())
print(d2)
>>>
('z', 3)
('y', 2)
{'x': 1}

help(dict.popitem)
>>>
Help on method_descriptor:

popitem(...)
    D.popitem() -> (k, v), remove and return some (key, value) pair as a
    2-tuple; but raise KeyError if D is empty.
d1 = {'x':1, 'y':2}
d2 = {'m':21, 'n':76, 'y':44}
d1.update(d2) # 合并字典,若有相同的key,则以参数中的字典为准,覆盖掉旧的
print(d1)
>>>
{'x': 1, 'y': 44, 'm': 21, 'n': 76}

d3 = dict(name='Jackko', age=24, gender='m') # 定义字典,注意key都是字符串类型或数字类型
print(d3)
>>>
{'name': 'Jackko', 'age': 24, 'gender': 'm'}

print(d3.setdefault('name', None)) # 功能类似get(),获取参数1的value值
print(d3.setdefault('weight', 120)) # 若没有,则添加参数key-value到字典,并返回参数value
print(d3)
>>>
Jackko
120
{'name': 'Jackko', 'age': 24, 'gender': 'm', 'weight': 120}

zip('xyz', '123') # 将序列一一对应组成元组,返回的是对象,节省内存。需要用list()来查看
print(list((zip('xyz', '123'))))
print(list((zip('xyzm', '123')))) # 只会一一对应,多的不要
print(list((zip('xyz', '1234'))))
>>>
[('x', '1'), ('y', '2'), ('z', '3')]
[('x', '1'), ('y', '2'), ('z', '3')]
[('x', '1'), ('y', '2'), ('z', '3')]

d4 = dict(zip('xyz', '123')) # 构建字典
print(d4)
>>>
{'x': '1', 'y': '2', 'z': '3'}

【声明】:学习笔记基于互联网上各种学习资源的个人整理。

以上是本期内容,下期介绍python的集合类型。

我叫小保,一名计算机视觉爱好者、学习者、追随者,欢迎关注我一起学习。

你可能感兴趣的:(python,python,深度学习)