字典的增、删、改、查操作及应用

#–author:zhaozhao
#date:2020/07/29

字典中的元素是由键值对组成,主键唯一且无序。
① 字典的创建

dic={"name":'zhaozhao','age':18,'hobby':{'girl_name':'bb','age':18},'is_handsome':True}
dic=dict((('name','alex'),))
dic=dict([['name','alex'],])

② 添加

dic={'name':'alex'}
dic['age']=18

# setdefault() 键若存在,返回字典中相应的键对应的值18,不存在则返回此语句的设置值22
ret=dic.setdefault('age',22)  # 返回18
# 键不存在,在字典中中增加新的键值对,并返回相应的值 girl
ret2=dic.setdefault('hobby','girl')

③ 删除

dic = {'name': 'zhaozhao', 'age': 18, 'class': 1}
dic.clear()  # 清空字典
del dic['name']  # 删除字典中指定键值对
ret=dic.pop('age')  # 删除字典中指定键值对,并返回该键值对的值
a = dic.popitem()  # 随机删除某组键值对,并以元组方式返回值
del dic  # 删除整个字典

④ 改

dic['age']=13
# updata
dic.update(dic2)  # 加入所有没有的,若有重复的键则更新值

⑤ 查 通过键去查找

dic={'age': 18, 'name': 'zhaozhao', 'hobby': 'girl'}
len(dic)
print(str(dic))  # 输出字典 字符串类型
type(dic)  # 类型
dic['name']
dic.get('name'))  # 获取指定键对应的值
list(dic.keys())  # 输出键值
list(dic.values())  # 输出值
list(dic.items())  # 输出所有条款
print(5 in dic)  # 判断5是否在键中
print(sorted(dic.items()))  # 按照键排序 不可存在字母和数字一起排序的情况
sorted(dic.values())  # 按照值排序
for i in a.values():
    print(i)
for i in  a.items():
    print(i)
for k,v in a.items():
    print(k,v)

⑥ 其他操作以及涉及到的方法

dic=dict.fromkeys(['host1','host2','host3'],'test')#相当于格式化
# {'host3': 'test', 'host1': 'test', 'host2': 'test'}
dic['host2']='abc'  # 更改
# {'host3': 'test', 'host1': 'test', 'host2': 'abc'}
dic=dict.fromkeys(['host1','host2','host3'],['test1','tets2'])
# {'host1': ['test1', 'tets2'], 'host2': ['test1', 'tets2'], 'host3': ['test1', 'tets2']}
dic['host2'][1]='test3'
# {'host1': ['test1', 'test3'], 'host2': ['test1', 'test3'], 'host3': ['test1', 'test3']}
# 相当于都改为test3

⑦ 嵌套字典的应用

menu={'zhaozhao':{"sex":{"g":{},},
                  "home":{"x":{},},
                  },
      "xiaotang":{"sex":{"g":{},},
                  "home":{"hn":{},},},
      "junge":{"sex":{"g":{},},
                  "home":{"sx":{},},},
      "qijie":{"sex":{"g":{},},
                  "home":{"xj":{},},},
}

current_layer=menu
parent_layer=[]
while True:
    for key in current_layer:
        print(key)
    choice=input(">>").strip()
    if len(choice)==0:
        continue
    if choice in current_layer:
        parent_layer.append(current_layer)  # 将本层字典加入父层,需要时取出
        current_layer=current_layer[choice]  # 进入本层的子层
    elif choice=="b":
        if parent_layer:
            current_layer=parent_layer.pop()  # 若有回退操作,则在父层中取出。
    else:
        print ("无此项")
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值