python 字典操作

简介

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

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

dic = {'name': '小黄', 'age': '12', 'job': 'work', 'address': 'china', 'f': '3'}

1.元素追加

  • 方法1:直接添加
    dic['sex'] = 'male'
  • 方法2:通过setdefault(key, value)添加, 该方法自带返回值,返回的是添加的value
ret = dic.setdefault('color', 'yellow')  # ret此时被复制为yellow
print('ret:', ret)
print(dic)
# 此外,该方法添加的键值对,如果字典已经存在了, 就不会重复添加。
ret = dic.setdefault('name', '小黄')
print("检查setdefault()的判重性:", dic)
  • 方法3:dict1.update(dict2) 把字典dict2的键/值对更新到dict1里。(如果dict1和dict2如果有相同的键,那么对应的值,会以更新的为准,即dict2.)
dict1 = {'Name': 'Zara', 'Age': 7}
dict2 = {'Sex': 'female'}
dict1.update(dict2)

2.判断key是否存在

  • 方法1:dict.has_key 返回值是True和False 。python2.2之前有这个函数,现在已经废弃
  • 方法2:in / not in dict
print('Sex' in dict1)

3.字典中的查找

  • 查找都有哪些键
dic = {'name': '小牧', 'age': 12, 'job': 'work', 'address': 'china'}
print(dic.keys())  # 输出结果 dict_keys(['name', 'age', 'job', 'address'])
  • 查找都有哪些值
 dic = {'name': '小牧', 'age': 12, 'job': 'work', 'address': 'china'}
print(dic.values())  # 输出结果 dict_values(['小牧', 12, 'work', 'china'])
  • 查找所有键值对
dic = {'name': '小牧', 'age': 12, 'job': 'work', 'address': 'china'}
print(dic.items())   # 输出结果 dict_items([('name', '小牧'), ('age', 12), ('job', 'work'), ('address', 'china')])

注意:items() keys() values()得到的返回值并不是list,需要转换形如:list(dic.key)!!!

4.字典中的删除

# 两个例子
del dic['name']
dic.clear()     # 输出None

5.字典中的多层嵌套

cc = {
    'ct':{
    'sex':'male'
    },
    'wj':{
    'sex':'female'
    },
}
print(cc)   # 结果 {'ct': {'sex': 'male'}, 'wj': {'sex': 'female'}}
print(cc['ct'])  # 结果 {'sex': 'male'}
print(cc['ct']['sex'])  # 结果 male

6.字典的遍历

for i in dic:
    print(i)   # 默认为健
    print(i, dic[i])  # 得到key和value

for i, v in dic.items():
    print(i, v)  # 得到key和value

7.字典的特性(重要)

  • 同一个键可以出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,举个栗子:
dict = {'Name': 'lcx', 'Age': 20, 'Name': 'lxy'};
print("dict['Name']: ",  dict['Name']) # 输出  dict['Name']:  lxy
  • 键必须不可变,所以可以用字符串元组(元祖不可变)充当,所以用列表就不行。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值