字典
字典
(1)用大括号包裹,以逗号分割每个键值对,键与值之间使用冒号连接, {key:values,key:values}
(2)键: 需要是不可变的数据结构, 值可以是任意的数据对象
(3)3.6版本之前,完全无序。
        3.6版本之后存储的时候保留了字典定义的字面顺序,在获取内存中数据时重新按照字面顺序做了排序,所以看起来有序,实际上存储时还是无序。
增加 
增加方法一:
dict={}
dict["w"] = "wc"
print(dict)
增加方法二:
或者使用setdefault()
setdefault:两个参数,key和value,功能是给字典添加一项,如果该项已经存在,那么便不更新,如果不存在,则添加上。
dict = {}
dict.setdefault("a")
print(dict)
dict["a"] = "aaaaa"
print(dict)
dict.setdefault("a","default")
print(dict)
增加方法三:
或者使用update
update:利用一个字典a更新另外一个字典b。a字典中的key和value在b中,则覆盖,不在则添加(其实是改的功能,也有增的功能)。
dict = {}
dict.update({'d':'xxxx'})
print(dict)输出结果:
{'d': 'xxxx'}
删除
删除方法一:
dict = {}
dict["w"] = "wc"
print(dict)
del(dict["w"])
print(dict)输出结果:
{'w': 'wc'}
{}
删除方法二:
dict = {}
dict["w"] = "wc"
print(dict)
dict.pop("w")
print(dict)输出结果:
{'w': 'wc'}
{}
删除方法三:
随机删除一个
dict = {}
dict["w"] = "wc"
print(dict)
dict.popitem()
print(dict)输出结果:
{'w': 'wc'}
{}
删除方法四:
清空所有
dict = {}
dict["w"] = "wc"
print(dict)
dict.clear()
print(dict)输出结果:
{'w': 'wc'}
{}
修改
修改方法一:
dict = {}
dict["w"] = "wc"
print(dict)
dict["w"] = "wto"
print(dict)输出结果:
{'w': 'wc'}
{'w': 'wto'}
修改方法二:
dict = {}
dict["w"] = "wc"
print(dict)
dict.update({"w":"who"})
print(dict)输出结果:
{'w': 'wc'}
{'w': 'who'}
查询
查询方法一:get()
get 在获取字典键时,如果不存在,不会发生任何报错,返回的是None
dict = {}
dict["w"] = "wc"
print(dict)
dict.get("w")输出结果:
{'w': 'wc'}
'wc'
查询方法二:
此种方法如果不存在会抛出异常
dict = {}
dict["w"] = "wc"
dict["w"]
#dict["x"]   # 报错输出结果:
'wc'
查询方法三:
查询所有
dict = {}
dict["w"] = "wc"
print(dict)输出结果:
{'w': 'wc'}
输出key的列表
dict = {"a" : "apple", "b" : "banana", "c" : "grape", "d" : "orange"}
print (dict.keys())输出结果:
dict_keys(['a', 'b', 'c', 'd'])
输出value的列表
dict = {"a" : "apple", "b" : "banana", "c" : "grape", "d" : "orange"}
print (dict.values())输出结果:
dict_values(['apple', 'banana', 'grape', 'orange'])
每个元素是一个key和value组成的元组,以列表的方式输出
dict = {"a" : "apple", "b" : "banana", "c" : "grape", "d" : "orange"}
print (dict.items())输出结果:
dict_items([('a', 'apple'), ('b', 'banana'), ('c', 'grape'), ('d', 'orange')])  
字典的遍历
dict = {"a" : "apple", "b" : "banana", "g" : "grape", "o" : "orange"}
for k in dict:
    print ("dict[%s] =" % k,dict[k])输出结果:
dict[a] = apple
dict[b] = banana
dict[g] = grape
dict[o] = orange
    
字典items()的使用
每个元素是一个key和value组成的元组,以列表的方式输出
dict = {"a" : "apple", "b" : "banana", "c" : "grape", "d" : "orange"}
print (dict.items())输出结果:
dict_items([('a', 'apple'), ('b', 'banana'), ('c', 'grape'), ('d', 'orange')])
 
调用items()实现字典的遍历
dict = {"a" : "apple", "b" : "banana", "g" : "grape", "o" : "orange"}
for (k, v) in dict.items():
    print ("dict[%s] =" % k, v)输出结果:
dict[a] = apple
dict[b] = banana
dict[g] = grape
dict[o] = orange
使用列表、字典作为字典的值
dict = {"a" : ("apple",), "bo" : {"b" : "banana", "o" : "orange"}, "g" : ["grape","grapefruit"]}
print(dict["a"])
print(dict["a"][0])
print(dict["bo"])
print(dict["bo"]["o"])
print(dict["g"])
print(dict["g"][1])输出结果:
('apple',)
apple
{'b': 'banana', 'o': 'orange'}
orange
['grape', 'grapefruit']
grapefruit
字典中元素的获取方法
dict = {"a" : "apple", "b" : "banana", "c" : "grape", "d" : "orange"}
print (dict)
print (dict.get("c", "apple"))        
print (dict.get("e", "apple"))输出结果:
{'a': 'apple', 'b': 'banana', 'c': 'grape', 'd': 'orange'}
grape
apple
get()的等价语句
D = {"key1" : "value1", "key2" : "value2"}
if "key1" in D:
    print (D["key1"])
else:
    print ("None")输出结果:
value1 
字典的更新
dict = {"a" : "apple", "b" : "banana"}
print(dict)
dict2 = {"c" : "grape", "d" : "orange"}
dict.update(dict2)
print(dict)输出结果:
{'a': 'apple', 'b': 'banana'}
{'a': 'apple', 'b': 'banana', 'c': 'grape', 'd': 'orange'}
udpate()的等价语句
D = {"key1" : "value1", "key2" : "value2"}
E = {"key3" : "value3", "key4" : "value4"}
for k in E:
    D[k] = E[k]
print (D)输出结果:
{'key1': 'value1', 'key2': 'value2', 'key3': 'value3', 'key4': 'value4'}
调用sorted()排序
dict = {"a" : "apple", "b" : "grape", "c" : "orange", "d" : "banana"}
print (sorted(dict))输出结果:
['a', 'b', 'c', 'd']
二级容器 ( list tuple set dict )
二级列表
lst = [1,2,3,[4,5,6]]
二级元组
tup = (1,2,(10,11))
二级集合
setvar = {1,2,("a","b")}
二级字典
dic = {"a":1,"b":{"c":10}}
print(dic["b"]["c"])
四级容器
container = [1,2,3,(4,5,6,{"a":1,"b":[11,"bingo"]})]
res1 = container[-1]
print(res1)结果输出:
(4, 5, 6, {'a': 1, 'b': [11, 'bingo']})
res2 = res1[-1]
print(res2)结果输出:
{'a': 1, 'b': [11, 'bingo']}
res3 = res2["b"]
print(res3)结果输出:
[11, 'bingo']
res4 = res3[-1]
print(res4)结果输出:
bingo
一步简写
res = container[-1][-1]["b"][-1]
print(res)结果输出:
bingo
等长的二级容器
外面是容器,里面的元素也是容器,且元素个数相同
lst = [(1,2,3),[4,5,6],{7,8,9}]dict 字典类型的强制转换
要求: 必须是等长的二级容器,并且里面的元素个数是2个;
外层是列表,元组,集合 , 里层是列表或者元组的等长二级容器 => 字典;
1.外层是列表,里层是列表或者元组
lst = [ ["a",1] , ("b",2) ]
dic = dict(lst)
print(dic , type(dic)) 输出结果:
{'a': 1, 'b': 2} <class 'dict'>
2.外层是元组,里层是列表或者元组
lst = [ ["a",1] , ("b",2) ]
dic = dict(lst)
print(dic , type(dic))输出结果:
{'a': 1, 'b': 2} <class 'dict'>
3.外层是集合,里层是元组
setvar = { ("a",1) , ("b",2) }
dic = dict(setvar)
print(dic , type(dic))输出结果:
{'a': 1, 'b': 2} <class 'dict'>
例外1:外层是列表/元组,里层放集合
可以实现,不推荐使用,因为达不到想要的目的,集合无序,不推荐使用
lst = [ ["a",1] , {"b","250"} ]
dic = dict(lst)
print(dic)输出结果:
{'a': 1, 'b': 2} <class 'dict'>
例外2:外层是列表/元组,里层放字符串
字符串长度只能是2位,有极大的局限性,不推荐使用
lst = ["a1","b2"]
# lst = ["a11","b22"] error
dic = dict(lst)
print(dic)输出结果:
{'a': '1', 'b': '2'}
 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号