1.字典以键值对组成,包含在{}中,字典的键必须为hashable,即不可变(字符串、元组、数字),并且唯一;值可以是任何类型
# dict1 = {[1]: 1} # 报错:TypeError: unhashable type: 'list'
# dict1 = {
{1}: 1} # 报错:TypeError: unhashable type: 'set'
dict1 = {(1,): 1}
print(dict1) # {(1,): 1}
dict1 = {"12": 122}
print(dict1) # {'12': 122}
dict1 = {1: 12}
print(dict1) # {1: 12}
2.字典的创建有多种,以下几种都等同
dict1 = dict(one=1, two=2)
print(dict1) # {'one': 1, 'two': 2}
dict2={"one":1,"two":2}
print(dict2) # {'one': 1, 'two': 2}
dict3=dict(zip(["one","two"],[1,2]))
print(dict3) # {'one': 1, 'two': 2}
dict4=dict( (("one",1),("two",2)) )
print(dict4) # {'one': 1, 'two': 2}
dict5=dict( [("one",1),("two",2)] )
print(dict4) # {'one': 1, 'two': 2}
dict6=dict({"one":1,"two":2})
print(dict6) # {'one': 1, 'two': 2}
print(dict1==dict2==dict3==dict4==dict5==dict6) # True
3.键用数字的时候,像1和1.0、1.00都是相同的,可以用来索引同一个字典条目,如果相同的键出现多次,则以最后的值为准
dict1 = {1: 12}
print(dict1) # {1: 12}
dict1 = {1: 12, 1.0: 33}
print(dict1) # {1: 33}
dict1 = {1: 12, 1.0: 33,1.00:666}
print(dict1) # {1: 666}
4.len(dict):表示字典中元素的个数
dict1 = {"a": 1, "aa": 11}
print(len(dict1)) # 2
dict1 = {"a": 1, "aa": 11,"b":2,"bb":22}
print(len(dict1)) # 4
5.dict[key]:返回 dict 中以 key 为键的值, 如果key不存在 , 则会引发 KeyError
dict1 = {"a": 1, "aa": 11,"b":2,"bb":22}
print(dict1["aa"]) # 11
# print(dict1["c"]) # 报错:KeyError: 'c'
6.dict[key]=value:将 dict[key] 设为 value,若 dict[key]原来存在,则更新原来的value值,否则类似于新加了key-value
dict1 = {"a": 1, "aa": 11,"b":2,"bb":22}
dict1["a"]=2
dict1["c"]=3
print(dict1) # {'a': 2, 'aa': 11, 'b': 2, 'bb': 22, 'c': 3}
7.key in dict:如果字典dict中存在键 key 则返回 True,否则返回 False
dict1 = {"a": 1, "aa": 11,"b":2,"bb":22,"a ":1000}
print(dict1) # {'a': 1, 'aa': 11, 'b': 2, 'bb': 22, 'a ': 1000}
print("a" in dict1) # True
print("a " in dict1) # True
print(" a" in dict1) # False
8.key not in dict:如果字典dict中不存在键 key 则返回 True,否则返回 False,等同于not key in dict
dict1 = {"a": 1, "aa": 11,"b":2,"bb":22,"a ":1000}
print(dict1) # {'a': 1, 'aa': 11, 'b': 2, 'bb': 22, 'a ': 1000}
print("a" not in dict1) # False
print("a " not in dict1) # False
print(" a" not in dict1) # True
dict1 = {"a": 1, "aa": 11,"b":2,"bb":22,"a ":1000}
print(dict1) # {'a': 1, 'aa': 11, 'b': 2, 'bb': 22, 'a ': 1000}
print(not "a" in dict1) # False
print(not "a " in dict1) # False
print(not " a" in dict1) # True
9.iter(dict):返回以字典的键为元素的迭代器,是 iter(dict.keys()) 的简写
dict1 = {"a": 1, "aa": 11,"b":2,"bb":22}
print(dict1.keys()) # dict_keys(['a', 'aa', 'b', 'bb'])
print(iter(dict1.keys())) # <dict_keyiterator object at 0x000002B3109DAA98>
print(list(iter(dict1.keys()))) # ['a', 'aa', 'b', 'bb']
dict1 = {"a": 1, "aa": 11,"b":2,"bb":22}
print(iter(dict1)) # <dict_keyiterator object at 0x000001217051AA98>
d=iter(dict1)
print(tuple(d)) # ('a', 'aa', 'b', 'bb')
dict1 = {"a": 1, "aa": 11,"b":2,"bb":22}
print(iter(dict1)) # <dict_keyiterator object at 0x000001217051AA98>
d=iter(dict1)
print(list(d)) # ['a', 'aa', 'b', 'bb']
10.dict.clear():删除字典的所有元素,无返回值
dict1 = {"a": 1, "aa": 11,"b":2,"bb":22}
print(dict1.clear()) # None
print(dict1) # {}
dict1.clear()
print(dict1) # {}
11.dict.copy():返回字典的浅拷贝
dict1 = {"a": 1,"bb":22,"ccc":[1,2,3],"dd":(4,5,6),"fu":[101,[102,103]]}
dict2=dict1.copy()
print(dict1) # {'a': 1, 'bb': 22, 'ccc': [1, 2, 3], 'dd': (4, 5, 6), 'fu': [101, [102, 103]]}
print(dict2) # {'a': 1, 'bb': 22, 'ccc': [1, 2, 3], 'dd': (4, 5, 6), 'fu': [101, [102, 103]]}
dict1["a"]=999
print(dict1) # {'a': 999, 'bb': 22, 'ccc': [1, 2, 3], 'dd': (4, 5, 6), 'fu': [101, [102, 103]]}
print(dict2) # {'a': 1, 'bb': 22, 'ccc': [1, 2, 3], 'dd': (4, 5, 6), 'fu': [101, [102, 103]]}
dict1["ccc"][0]=99
print(dict1["ccc"]) # [99, 2, 3]
print(dict2["ccc"]) # [99, 2, 3]
dict1["ccc"]=[8,9]
print(dict1["ccc"]) # [8, 9]
print(dict2["ccc"]) # [99, 2, 3]
dict1["ccc"]=888
print(dict1["ccc"]) # 888
print(dict2["ccc"]) # [99, 2, 3]
dict2["fu"][0]=119
print(dict1["fu"]) # [119, [102, 103]]
print(dict2["fu"]) # [119, [102, 103]]
dict2["fu"][1][0]=77
print(dict1["fu"]) # [119, [77, 103]]
print(dict2["fu"]) # [119, [77, 103]]
dict2["fu"][1]=[104,105,106]
print(dict1["fu"]) # [119, [104, 105, 106]]
print(