字典是一种标准映射类型,简单的示例来进行说明:
x = {"0":48, "1":49, "2":50, "3":51, "4":52, "5":53, "6":54, "7":55, "8":56, "9":57}
print(type(x))
## <class 'dict'>
print(x["0"])
## 48
#字典的调用
x[":"] = 58
print(x[":"])
## 58
#字典元素的增添
1.创建字典:
(1)直接使用大括号和冒号的组合来构建映射关系。
(2)使用dict()函数(与list()等函数类似),其每个参数是一个对应的键值对,键与值之间直接使用等号挂钩。
x = dict(0=48, 1=49, 2=50, 3=51, 4=52)
#其要求是不能往键上加引号
(3)使用列表作为参数,列表中的每个元素是使用元组包裹起来的键值对。
x = dict([("0", 48), ("1", 49), ("2", 50), ("3", 51)])
(4)以上多种方式可以混合使用。
(5)使用zip()函数传入:
x = dict(zip(["0", "1", "2"], [48, 49, 50]))
2.字典的增添
fromkeys(iterable[, values]) 可以使用itrable参数指定的可迭代对象来创建一个新的字典,并将所有的值初始化为values参数指定的值。
x = "IloveCloud"
y = dict.fromkeys(x, 520)
print(y)
## {'I': 520, 'l': 520, 'o': 520, 'v': 520, 'e': 520, 'C': 520, 'u': 520, 'd': 520}
#适用于创建一个所有键的值都相同的字典。
#若要修改某一键值对可:
y['I'] = 13
print(y)
## {'I': 13, 'l': 520, 'o': 520, 'v': 520, 'e': 520, 'C': 520, 'u': 520, 'd': 520}
#如果在字典中找不到对应的键,则增加一个新的键值对
y['L'] = 17
print(y)
## {'I': 13, 'l': 520, 'o': 520, 'v': 520, 'e': 520, 'C': 520, 'u': 520, 'd': 520, 'L': 17}
3.字典的删除
pop函数,popitem函数,del关键字,clear函数等可以进行字典的删除。
x = "IloveCloud"
y = dict.fromkeys(x, 520)
z = y
print(y)
## {'I': 520, 'l': 520, 'o': 520, 'v': 520, 'e': 520, 'C': 520, 'u': 520, 'd': 520}
print(y.pop('u'))
print(y)
#函数中的参数即要删去的键,返回值为键对应的值
## 520
## {'I': 520, 'l': 520, 'o': 520, 'v': 520, 'e': 520, 'C': 520, 'd': 520}
print(y.popitem())
print(y)
#删除字典中最后加入的键值对,返回值为对应的键值对
## ('d', 520)
## {'I': 520, 'l': 520, 'o': 520, 'v': 520, 'e': 520, 'C': 520}
#del关键字也可以用于键值对和字典的删除
del y['C']
print(y)
del y
## {'I': 520, 'l': 520, 'o': 520, 'v': 520, 'e': 520}
#若要删除字典中的内容而不是整个字典,则用clear函数
z.clear()
print(z)
## {}
4.字典的更改
x = "IloveCloud"
y = dict.fromkeys(x, 520)
y.update({'I':1013, 'C':7})
print(y)
## {'I': 1013, 'l': 520, 'o': 520, 'v': 520, 'e': 520, 'C': 7, 'u': 520, 'd': 520}
#或者
y.update(l=1, o=3, u=1, d=4)
print(y)
## {'I': 1013, 'l': 1, 'o': 3, 'v': 520, 'e': 520, 'C': 7, 'u': 1, 'd': 4}
5.字典的查阅
x = "IloveCloud"
y = dict.fromkeys(x, 520)
print(y['I'])
## 520
#查找键所对应的值,缺点是查找不存在的键时会报错
#而get()可以很好的解决问题 get(key[, default])
print(y.get("i", "The key is not exist"))
## The key is not exist
items(),keys(),values()方法:
分别用于获取键值对、键和值三者的视图对象。
视图对象即字典的动态视图,这就意味着当字典的内容发生改变的时候,视图对象的内容也会相应地跟着改变。
x = "IloveCloud"
y = dict.fromkeys(x, 520)
keys = y.keys()
values = y.values()
items = y.items()
print(keys)
print(values)
print(items)
## dict_keys(['I', 'l', 'o', 'v', 'e', 'C', 'u', 'd'])
## dict_values([520, 520, 520, 520, 520, 520, 520, 520])
## dict_items([('I', 520), ('l', 520), ('o', 520), ('v', 520), ('e', 520), ('C', 520), ('u', 520), ('d', 520)])
#若字典的内容发生改变,则视图对象也发生改变
y.pop('d')
print(keys)
print(values)
print(items)
## dict_keys(['I', 'l', 'o', 'v', 'e', 'C', 'u'])
## dict_values([520, 520, 520, 520, 520, 520, 520])
## dict_items([('I', 520), ('l', 520), ('o', 520), ('v', 520), ('e', 520), ('C', 520), ('u', 520)])
6.字典的其余用法
x = "IloveCloud"
y = dict.fromkeys(x, 520)
z = y.copy()
print(z)
## {'I': 520, 'l': 520, 'o': 520, 'v': 520, 'e': 520, 'C': 520, 'u': 520, 'd': 520}
#字典的浅拷贝
print(len(y))
## 8
#获取字典中键值对的数量
print('C' in y, 'X' in y, 'a' not in y)
## True False True
print(list(y))
## ['I', 'l', 'o', 'v', 'e', 'C', 'u', 'd']
#将字典转化为列表 = list(y.keys()) 同理存在list(y.values())。
a = iter(y)
#将字典转换为迭代器
print(next(a))
print(next(a))
## I
## l
7.字典的嵌套
x = {'a':{'Chinese':100, 'math':100, 'English':100},
'b':{'Chinese':120, 'math':90, 'English':130},
'c':{'Chinese':120, 'math':110, 'English':120}}
print(x['a']['math'])
## 100
#同理字典中也可以嵌套其他的序列,如
y = {'a':[100 ,100, 100],
'b':{'Chinese':120, 'math':90, 'English':130}}
print(y['a'][2])
## 100
8.字典推导式
x = "ILoveCloud"
y = {a:ord(a) for a in x}
print(y)
## {'I': 73, 'L': 76, 'o': 111, 'v': 118, 'e': 101, 'C': 67, 'l': 108, 'u': 117, 'd': 100}
#通过字符推导式循环将x字符串的每一个元素进行ord操作。