1、无序、可变,可以通过key索引,不可切片。
2、字典的key是不可变数据类型,可以是bool值。
dict() 的语法:
dict_01 = dict() # {}
print(dict_01)
dict_02 = dict(a = '1',b = 2,c = 'p') # 传入关键字 {'a': '1', 'b': 2, 'c': 'p'}
print(dict_02)
dict_03 = dict(zip(['a','b','c'],['1',2,'p'])) # 映射函数 {'a': '1', 'b': 2, 'c': 'p'}
print(dict_03)
dict_04 = dict([('a','1'),('b',2),('c','p')]) # 传入可迭代对象 {'a': '1', 'b': 2, 'c': 'p'}
print(dict_04)
dict1 = dict.fromkeys(['aa','bb','cc'],)
dict2 = dict.fromkeys(['aa','bb','cc'],555)
print(dict1)
print(dict2)
特点: setdefault 中的 值 可以是 {} 、[ ]
dict1 = {}
dict1.setdefault("张三",{})
print(dict1) ------------------- 结果:{'张三': {}}
dict1["张三"].setdefault("爱好",{})
print(dict1) ------------------- 结果:{'张三': {'爱好': {}}}
① dict[key]
dict1 = {"name":"liu","age":18}
print("name")
②dict.get(key,值)函数:
dict1 = {"name":"liu","age":18}
print(dict1.get("name",False))
③dict.setdefault( key , 值 )获取,注意get与setdefault区别。
dict1 = {"name":"liu","age":18}
print(dict1.setdefault("name","张三"))
① dict[key] = value
dict1 = {"name":"liu","age":18}
dict1["addr"] = "杭州"
② dict.setdefault( key , 值 )
dict1 = {"name":"liu","age":18}
print(dict1.setdefault("sex","男"))
① del 关键字语句:
② pop(key) 通过 key删除元素,并且获得 值
③ popitem()随机删除一个,并且获得 键值对
注意 str() 转化后需要用系统函数 eval()来提取字符串中的数据。
dict1 = {"name":"liu","age":18}
print(dict1.keys()) -------- 迭代对象
print(list(dict1.keys()),tuple(dict1.keys())) -------- 转化为 列表 元组
for i in dict1.keys: -------- for 遍历
print(i)
print('c' in dict_04) # key in dict 只能判断 key。
dict_04 = dict([('a','1'),('b',2),('c','p')]) # 传入可迭代对象 {'a': '1', 'b': 2, 'c': 'p'}
print(dict_04.get('c',888888)) # p
print(dict_04.get('jjjj',888888)) # 888888
print(dict_04) # {'a': '1', 'b': 2, 'c': 'p'} ,即只是读取,不改变数据的原始结构。
print(dict_04.setdefault('jjjj',888888)) # key不存在时会追加 键值对
print(dict_04) # 结果 :{'a': '1', 'b': 2, 'c': 'p', 'jjjj': 888888}
dict1 = dict.fromkeys(['aa','bb','cc'],)
dict2 = dict.fromkeys(['aa','bb','cc'],555)
print(dict1)
print(dict2)
按照字典值的大小对字典进行排序
1. 利用zip函数将key值和value值位置进行颠倒,再使用sorted进行排序
例如:
from random import randint
d= {k:randint(0,20) for k in 'abcdefg'}
#{'f': 10, 'g': 16, 'a': 18, 'c': 12, 'e': 16, 'd': 7, 'b': 16}
z = list(zip(d.values(),d.keys()))
# zip函数就是将输入的序列重新组合成每个元素都是元组的列表,其中每个元素由输入序列相同位置的元素组成
#[(10, 'f'), (16, 'g'), (18, 'a'), (12, 'c'), (16, 'e'), (7, 'd'), (16, 'b')]
print(sorted(zip(d.values(),d.keys())))
#[(7, 'd'), (10, 'f'), (12, 'c'), (16, 'b'), (16, 'e'), (16, 'g'), (18, 'a')]
2.利用匿名函数进行排序
print(sorted(d.items(),key = lambda k : k[1]))
#[('d', 7), ('f', 10), ('c', 12), ('g', 16), ('e', 16), ('b', 16), ('a', 18)]
3. 使用operator.itemgetter函数
import operator
print(sorted(d.items(), key=operator.itemgetter(1)))
#[('d', 7), ('f', 10), ('c', 12), ('g', 16), ('e', 16), ('b', 16), ('a', 18)]