day05

1. 字典

1.1 定义 {键:值} 大括号 键 冒号 值

  • 以{ }括起来的键值对组成
  • 字典是无序的,可变的数据类型
  • 用于存数数据,字典比列表快,将数据和数据之间进行关联

1.1.1 字典的键

  • 可哈希的--不可变的数据类型,避免哈希冲突使用了 开放寻址法

  • 要求唯一 如果有重复的键后边值的将前面的值覆盖

  • 可以是:int, str, tuple, bool.

  • 不可为**list . dict. set (不可哈希的)

  • dic = {"大黑哥":[1,2,3],"大黑哥":89}
    print(dic)  
    结果:
    {'大黑哥': 89}  如果键相同,则后边的将前边的覆盖
    

1.1.2 字典的值

  • 可以任意

1.2 字典的增

1.2.1 暴力添加,有键则改,没键则添加到末尾

dic = {"大黑哥":[1,2,3],"李文虎":89}

dic["大黑哥"] = 99  #暴力添加,有键则改,没键则添加到末尾
print(dic)     #{'大黑哥': 99, '李文虎': 89}

dic["韩信"] = ["中国"]
print(dic)     #{'大黑哥': 99, '李文虎': 89, '韩信': ['中国']}

1.2.2 dic.setdefault 有键则保持不变,没键则添加到末尾,只添加键,则打印返回值

dic = {"大黑哥":[1,2,3],"李文虎":89}

dic.setdefault("大黑哥",100) #"大黑哥"在字典中出现,故不添加
print(dic)   #{'大黑哥': [1, 2, 3], '李文虎': 89}

dic.setdefault("韩星")
print(dic)     #结果: {'大黑哥': [1, 2, 3], '李文虎': 89, '韩星': None}
print(dic.setdefault("韩星"))   #结果: None

dic.setdefault("韩星","中国")  #添加的键和值用**逗号**隔开
print(dic)    #结果: {'大黑哥': [1, 2, 3], '李文虎': 89, '韩星': '中国'}

1.3 字典的删

1.3.1 通过键删除键值对

1.3.1 del 空格 dic(键) 一次只能删除一个

1.3.1 由于dic是无序的,不可通过索引删除

dic = {"大黑哥":[1,2,3],"李文虎":89}
del dic["李文虎"]
print(dic)
结果:
{"大黑哥":[1,2,3]}

dic = {"大黑哥":[1,2,3],"李文虎":89}
del dic["大黑哥","李文虎"]
print(dic)
结果:
报错
dic = {"大黑哥":[1,2,3],"李文虎":89}
del dic
print(dic)   #结果:报错,全删了,未定义dic

lst = ["大黑哥",[1,2,3],"李文虎",89]
del lst
print(lst)   #结果:报错,全删了,未定义lst

1.3.2 python3.6以上默认删除最后一个

dic = {"大黑哥":[1,2,3],"李文虎":89}
dic.popitem()   #python3.6 默认删除最后一个
print(dic)    #结果: {'大黑哥': [1, 2, 3]}

dic.popitem()  #结果: ('李文虎', 89)   #返回值是元组

1.3.3 清空

dic = {"大黑哥":[1,2,3],"李文虎":89}
dic.clear()
print(dic)   #结果:  {}

print(dic.clear())   #结果:None  

1.3.4 pop() 删除

dic = {2:("你好"),"北京":"中国","石家庄":"河北"}
dic.pop("北京")  #通过字典的键进行删除键值对
print(dic)    # 结果 {2: '你好', '石家庄': '河北'}  

print(dic.pop("北京"))   #结果:中国  #返回值:返回的是被删除的值

1.4 字典的改

1.4.1 当update中的字典里没有dic中键值对就添加到dic字典尾部,如果有就修改里边的对应的值

dic = {2:"你好","北京":"中国","石家庄":"河北"}
dic1 = {"大黑哥":[88],"老黑哥":66,"北京":"首都"}

dic1.update(dic)
print(dic)  #{2: '你好', '北京': '中国', '石家庄': '河北'}
print(dic1)   
#结果: {'大黑哥': [88], '老黑哥': 66, '北京': '中国', 2: '你好', '石家庄': '河北'}  #("首都"变"中国")

dic.update(dic1)
print(dic1)   #{'大黑哥': [88], '老黑哥': 66, '北京': '首都'}
print(dic)   
#结果: {2: '你好', '北京': '首都', '石家庄': '河北', '大黑哥': [88], '老黑哥': 66}  #("中国"变"首都")

#  update括号中的字典级别高于update前面的字典

1.4.2 dic[键] = 键 的修改方法

# dic["常鑫"] = "dsb"   # 字典中没有某个键值对的时候就是添加,当键在字典中存在的时候就是修改
# print(dic)            #有则改 无则加

1.5字典的查

1.5.1 循环打印字典的键

dic = {"大黑":(666),"小黑":[888],"老黑":True}
for i in dic:
	print(i)
结果:
大黑
小黑
老黑

1.5.2 循环打印字典的值 dic.get()

dic = {"大黑":(666),"小黑":[888],"老黑":True}
for i in dic:
    dic.get(i)
    print(dic.get(i))
结果:
666    #数字
[888]  #列表
True   #布尔值

1.5.3 循环打印字典的键和值

dic = {"大黑":(666),"小黑":[888],"老黑":True}
for i in dic:
    dic.get(i)
    print(i,dic.get(i))
 结果:
大黑 666
小黑 [888]
老黑 True

dic.setdefault

原文地址:https://www.cnblogs.com/lvweihe/p/11166814.html