字典

字典

(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'}

 

posted @ 2022-10-28 17:32  屠魔的少年  阅读(6)  评论(0)    收藏  举报