目录
1.字典的定义
py中唯一实现映射关系的内置类型,例如:摩斯密码的解译。
# 摩斯密文表
c_table = [".-", "-...", "-.-.", "-..", ".", "..-.",
"--.", "....", "..", ".---", "-.-", ".-..",
"--", "-.", "---", ".--.", "--.-", ".-.",
"...", "-", "..-", "...-", ".--", "-..-",
"-.--", "--..", ".----", "..---", "...--", "....-",
".....", "-....", "--...", "---..", "----.", "-----"]
# 摩斯明文表
d_table = ["A", "B", "C", "D", "E", "F",
"G", "H", "I", "J", "K", "L",
"M", "N", "O", "P", "Q", "R",
"S", "T", "U", "V", "W", "X",
"Y", "Z", "1", "2", "3", "4",
"5", "6", "7", "8", "9", "0"]
code = input("请输入摩斯密码:")
split_code = code.split(" ")
result = [d_table[c_table.index(each)] for each in split_code]
print(result)
2.字典的创建
以下介绍5种字典创建的方法:
第一种dict(键="值",键="值",键="值")
n = dict(a="1",b="2",c="3")
n
>>>{'a': '1', 'b': '2', 'c': '3'}
第二种dict([("键","值"),("键","值"),("键","值")])
c = dict([("a","1"),("b","2"),("c","3")])
c
>>>{'a': '1', 'b': '2', 'c': '3'}
第三种({"键":"值","键":"值","键":"值"})
s = dict({"a":"1","c":"2","d":"3"})
s
>>>{'a': '1', 'c': '2', 'd': '3'}
第四种({"键":"值","键":"值","键":"值"},键="值")
z = dict({"a":"1","c":"2","d":"3"},e="5")
z
>>>{'a': '1', 'c': '2', 'd': '3', 'e': '5'}
第五种(zip(["键","键","键"],["值","值","值"]))
e = dict(zip(["a","b","c"],["5","6","7"]))
e
>>>{'a': '5', 'b': '6', 'c': '7'}
3.字典的增删改查
3.1 增
首先我们使用fromkeys(iterable[,values])函数,快速创建一个所有值相同的字典。
z = dict.fromkeys("abcde",233)
z
>>>{'a': 233, 'b': 233, 'c': 233, 'd': 233, 'e': 233}
然后我们使用字典名["f"] = 332的方法就可以将改键与值增加到字典里面,
如果键f本就存在字典中,则按照新值进行替换,
如果键f不存在字典中,则再最后新增该键值对。
z
>>>{'a': 233, 'b': 233, 'c': 233, 'd': 233, 'e': 233}
z["f"] = 332
z
>>>{'a': 233, 'b': 233, 'c': 233, 'd': 233, 'e': 233, 'f': 332}
z["a"] = 332
z
>>>{'a': 332, 'b': 233, 'c': 233, 'd': 233, 'e': 233, 'f': 332}
3.2 删
pop(key[,default])函数可以实现删除指定键值对,如果字典中没有该键,使用pop则会出错,但是为了优化用户体验,可以添加"指定语句"来解决,如下。
z
>>>{'a': 332, 'b': 233, 'c': 233, 'd': 233, 'e': 233, 'f': 332}
z.pop("a")
>>>332
z
>>>{'b': 233, 'c': 233, 'd': 233, 'e': 233, 'f': 332}
z.pop("g","找不到,无法删除")
>>>'找不到,无法删除'
z
>>>{'b': 233, 'c': 233, 'd': 233, 'e': 233, 'f': 332}
popitem()函数可以删除最后一个加入字典的键值对,
另外也可以使用del字典名["键"],进行删除。
z
>>>{'b': 233, 'c': 233, 'd': 233, 'e': 233, 'f': 332}
del z["b"]
z
>>>{'c': 233, 'd': 233, 'e': 233, 'f': 332}
最后可以clear()函数可以清空字典的内容。
z
>>>{'c': 233, 'd': 233, 'e': 233, 'f': 332}
z.clear()
z
>>>{}
3.3 改
如果要修改单个值,则可以使用以下方法:
z = dict({"a":"1","b":"2","c":"3","d":"4"})
z
>>>{'a': '1', 'b': '2', 'c': '3', 'd': '4'}
z["a"] = 100
z
>>>{'a': 100, 'b': '2', 'c': '3', 'd': '4'}
如果需要同时修改多个值,可以使用update([other])。
z
>>{'a': 100, 'b': '2', 'c': '3', 'd': '4'}
z.update(b='200',c='300')
z
>>>{'a': 100, 'b': '200', 'c': '300', 'd': '4'}
z.update({'b':2000,'c':3000})
z
>>>{'a': 100, 'b': 2000, 'c': 3000, 'd': '4'}
3.4 查
首先我们可以通过指定键查值,如果键不存在,则报错。
z
>>>{'a': 100, 'b': 2000, 'c': 3000, 'd': '4'}
z['a']
>>>100
z['g']
Traceback (most recent call last):
File "<pyshell#41>", line 1, in <module>
z['g']
KeyError: 'g'
我们可以使用get(key[,defualt])函数来消除这个报错,让用户体验更好一些。
z.get('g',"字典里面没有啊!")
>>>'字典里面没有啊!'
接下来的setdefault(key[,default])函数,相比于get(key[,defualt])函数,可以在字典没有该键值对的情况下,对字典进行更新,且不会报错。例如:
z
>>>{'a': 100, 'b': 2000, 'c': 3000, 'd': '4'}
z.setdefault("g","255")
>>>'255'
z
>>>{'a': 100, 'b': 2000, 'c': 3000, 'd': '4', 'g': '255'}
4.字典获取视图对象
视图对象表示字典的动态视图,意味着当字典内容发生改变时,视图对象内容也相应的改变。
下面介绍三个函数,values(),keys(),items()分别可以获取字典的值,键,键值对。
z
>>>{'a': 100, 'b': 2000, 'c': 3000, 'd': '4', 'g': '255'}
z.values()
>>>dict_values([100, 2000, 3000, '4', '255'])
z.keys()
>>>dict_keys(['a', 'b', 'c', 'd', 'g'])
z.items()
>>>dict_items([('a', 100), ('b', 2000), ('c', 3000), ('d', '4'), ('g', '255')])
5.字典的其他操作
1.len()函数获取字典的长度
2.in/not in判断某个键是否存在与字典中:"key" in dict /"key" not in dict
3.字典转换为列表,使用list()函数,例如:
z
>>>{'a': 100, 'b': 2000, 'c': 3000, 'd': '4', 'g': '255'}
list(z)
#将字典的键转化为列表
>>>['a', 'b', 'c', 'd', 'g']
#将字典的值转化为列表
list(z.values())
>>>[100, 2000, 3000, '4', '255']
4.逐个遍历迭代器,例如:
z
>>>{'a': 100, 'b': 2000, 'c': 3000, 'd': '4', 'g': '255'}
b = iter(z)
next(b)
>>>'a'
next(b)
>>>'b'
next(b)
>>>'c'
next(b)
>>>'d'
next(b)
>>>'g'
next(b)
>>>Traceback (most recent call last):
File "<pyshell#63>", line 1, in <module>
next(b)
StopIteration
6.字典内部逆向排序,我们使用到reverse()函数,例如:
z
>>>{'a': 100, 'b': 2000, 'c': 3000, 'd': '4', 'g': '255'}
list(reversed(z))
>>>['g', 'd', 'c', 'b', 'a']
7.字典的嵌套,例如:
z = {"a":{"A":"01"},"b":{"B":"02"}}
z["a"]["A"]
>>>'01'
8.字典推导式,例如:
n = {"a":"123","b":"234","c":"345","d":"456"}
a = {v:k for k,v in n.items()}
a
>>>{'123': 'a', '234': 'b', '345': 'c', '456': 'd'}