周大胖子 发表于 2023-8-17 17:40:10

python 字典



def d(q):
    print(q)


# name = ['大力', '出', '奇迹', '王三岁', '乖乖女', '777']

w = {'a': '孔大力', 'b': '王三岁', 'c': '大兄弟'}
# 参考链接 https://baijiahao.baidu.com/s?id=1765940919515603678&wfr=spider&for=pc
# 参考链接 https://blog.csdn.net/qq_62731133/article/details/127397112

# 字典的操作
# 1.访问字典 直接取
#   get(键,默认值) 没有这个键的时候返回一个默认值,有这个键 则默认值无效
# 2.添加和更新键值对 (何前端的json 一样 直接 m[键]=值 )
# 3.删除键值对 del 或者 pop(键,'默认值')// 注意这个pop改变了原本的字典值
# 4.列表的循环for i, v in w.items():
# 5.字典的合并update (如果键名相同,则值会覆盖 后面的覆盖前面的)
# 6.字典复制 (看最下面单独拎了一块)
# 7.推导公式
# 使用内置函数dict()通过其他字典创建
# 使用fromkeys()方法创建字典
# clear()方法:删除字典中的所有元素
# items 获取所有键值对视图
# keys获取所有键视图
# values 获取所有值视图

d(w['a'])
d(w.get('a'))
d(w.get('d', '华客'))
# 孔大力
# 孔大力
# 华客

w['g'] = '王四岁'
w['a'] = '孔莉'
d(w)
# {'a': '孔莉', 'b': '王三岁', 'c': '大兄弟', 'g': '王四岁'}

del w['a']
d(w)
# {'b': '王三岁', 'c': '大兄弟', 'g': '王四岁'}

w.pop('b')
d(w)
# {'c': '大兄弟', 'g': '王四岁'}

st = ''
for i, v in w.items():
    st += '{}的值是{}==='.format(i, v)
d(st)
# c的值是大兄弟===g的值是王四岁===

n = {'m': '小刘'}
w.update(n)
d(w)
# {'c': '大兄弟', 'g': '王四岁', 'm': '小刘'}

n2 = {'m': '张张'}
w.update(n2)
d(w)
# {'c': '大兄弟', 'g': '王四岁', 'm': '张张'}

n3 = dict(n2)
d(n2)
# {'m': '张张'}

n4 = dict.fromkeys(['鱼', '肉', '奶'], '荤的')
d(n4)
# {'鱼': '荤的', '肉': '荤的', '奶': '荤的'}

d(w.items())
d(w.keys())
d(w.values())
# dict_items([('c', '大兄弟'), ('g', '王四岁'), ('m', '张张')])
# dict_keys(['c', 'g', 'm'])
# dict_values(['大兄弟', '王四岁', '张张'])

# 以上三个数值都可以用 list() 进行转化

n4.clear()
d(n4)
# {}


newa = {k: v for k, v in n4.items}
d(newa)
# 这地方报错了

# 复制字典
# copy()方法,返回字典的浅复制,复制父对象及其子对象的引用
# deepcopy()方法,深复制,完全复制父对象及其子对象,此方法包含在copy模块中
h = {'b': '王三岁', 'c': '大兄弟', 'g': '王四岁', 'k': ['v1', 'v2']}
h2 = h
j = h.copy()
d(j)
# {'b': '王三岁', 'c': '大兄弟', 'g': '王四岁', 'k': ['v1', 'v2']}

k = copy.deepcopy(h)
d(k)
# {'b': '王三岁', 'c': '大兄弟', 'g': '王四岁', 'k': ['v1', 'v2']}

h['k'].append('v3')
d(h)
# {'b': '王三岁', 'c': '大兄弟', 'g': '王四岁', 'k': ['v1', 'v2', 'v3']}

d(h2)
# {'b': '王三岁', 'c': '大兄弟', 'g': '王四岁', 'k': ['v1', 'v2', 'v3']}

d(j)
# {'b': '王三岁', 'c': '大兄弟', 'g': '王四岁', 'k': ['v1', 'v2', 'v3']}
# 这里有个坑点 因为不是深度复制子对象仍然受到了影响

d(k)
# {'b': '王三岁', 'c': '大兄弟', 'g': '王四岁', 'k': ['v1', 'v2']}



页: [1]
查看完整版本: python 字典