# 1、基本使用
# 1、用途:按照键值对的形式存放多个任意类型的value,key反映的value的属性
# 2、定义方式, 在{}内用逗号分隔开多个key:value, 其中value可以是任意类型
# 而key必须是不可变类型,通常是字符串类型
d = {1:"aaa", 3.1:'bbbb', [1, 2]:"ccc"}
d = {1:"aaa", 3.1:'bbbb', ():"ccc"}# d=dict(...)
print(type(d))
print(d[()])
# 类型转换
l = [("name", "egon"), ("age", 18), ["gender", "male"]]
res =dict(l)
print(res)
d =dict(x=1, y=2, z=3)
print(d)
# 空字典
d={}
print(type(d))
dic={}.fromkeys(["name",'age',"gender"],None)
dic={}.fromkeys("hello",None)
print(dic)
# 3、常用操作+内置的方法
# ==========>优先掌握的操作:
# 1、按key存取值:可存可取
d={'k1':111}
print(d['k1'])
d['k2']=222
print(d)
# 2、长度len
d={'k1':111,'k2':222}
print(len(d))
# 3、成员运算in和not in
d={'k1':111,'k2':222}
print('k1' in d)
print(111 in d)
# 4、删除
d = {'k1':111, 'k2':222}
# 6.1 万能删除,没有返回值,代表的是单纯的删除
del d['k1']
print(d)
# 6.2 随机删,返回一个元组
res=d.popitem()
print(d)
print(res)
# 6.3 指定key删除,有返回值,代表的是取走操作
res=d.pop('k1')
print(d)
print(res)
# 5、键keys(),值values(),键值对items()
"""
>>> d={'k1':111,'k2':222}
>>> d.keys()
['k2', 'k1']
>>> d.values()
[222, 111]
>>> d.items()
[('k2', 222), ('k1', 111)]
"""
# 6、循环
d={'k1':111,'k2':222}
for kin d:
print(k)
for vin d.values():
print(v)
for k,vin d.items():
print(k,v)
keys=[]
for kin d:
keys.append(k)
keys =list(d.keys())
print(keys)
# ==========================该类型总结===========================
# 存一个值or存多个值
# 有序or无序
# 可变or不可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash)