Python字典

创建字典

字典元素是键值对形式,键:值。键必须是不可变类型,键在字典中是唯一的,值可以相同。

# 赋值创建
d = {}  # 创建空字典
d1 = {'a':1, 'b':2}

# dict实例化创建
d2 = dict()                      # 创建空字典
d3 = dict([('a', 1), ('b', 2)])  # 列表每个元素包含两个元素
d4 = dict(a=1, b=2)              # 直接把键值对绑定在一起,name=value
print(d3, d4)

# d5 = {[1, 2]: 'a'}             # 字典键必须为不可变类型,不能是列表

# 字典推导公式
d5 = {i: i**3 for i in range(3)}
print(d5)

# 通过zip函数生成字典
ls1 = ['a', 'b', 'c']
ls2 = [1, 2, 3]
d6 = dict(zip(ls1, ls2))         # zip函数把两个迭代对象对应位置的元素打包成元组
print(d6)

# 通过键来操作字典
print(d1['a'])  # 通过键访问字典元素  
d1['a'] = 10    # 键存在,修改字典值
d1['c'] = 3     # 键不存在,增加元素
del d1['b']     # 删除字典元素
print(d1)

字典的值可以是函数 

def add(x):
    return x + x

d = dict(fun=add)               # 函数作为字典的值
print(d)
print(d['fun'](3))

d1 = dict(fun=lambda x: x + x)  # lambda函数作为字典的值
print(d1)
print(d1['fun'](3))

字典转为其他容器

# 字典生成列表、元组、集合,元素只包含字典的键
d = {'a': 1, 'b': 2}
print(list(d))
print(tuple(d))
print(set(d))

# 单元素的列表、元组和集合不能转换为字典
ls = [("a", 1), ("b", 2)]  # 列表生成字典时每个元素均包含两个元素
d1 = dict(ls)   
print(d1)

遍历字典

d = {"a":1, "b":2}
for key in d.keys():      # 遍历字典的键
    print(key, end=" ")
print()

for value in d.values():  # 遍历字典的值
    print(value, end=" ")
print()

for k, v in d.items():    # 遍历字典的键值对
    print(k, v, end=" ")
print()

for i in d:               # 对字典直接遍历只返回字典的键
    print(i, end=" ")
print()

# 用in检查某元素是否在字典内时只能检查字典的键
if "a" in d:  
    print("a is in dictionary d.")
if 1 in d:
    print("1 is in dictionary d.")  

字典方法

d = {"a":1, "b":2}
v = d.pop('a')             # 若键存在删除键值对并返回对应的值
v1 = d.pop('c', 0)         # 若键不存在,返回设置的默认值,若没有设定默认值则抛出KeyError
print(d, v, v1, sep='; ')

v2 = d.get('a', 0)         # 若键存在则返回对应的值,若该键不在字典中返回设置的默认值
v3 = d.setdefault('c', 3)  # 若键存在则返回对应的值,若键不存在则在字典中添加键和默认值,并返回默认值
print(d, v2, v3, sep='; ')

d1 = {'c':10, 'd':3}
d.update(d1)               # 合并字典,若被合并的字典的键已经存在则更新对应的值
print(d1)
  • 21
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值