d0 = {}
d1 = dict(name="Mary", age=20)
print(type(d0), type(d1))
print(d1)
#
# {'name': 'Mary', 'age': 20}
2、键和值之间用冒号隔开,即key: value
3、键值对之间用逗号隔开,每个键值对后面都有逗号,且换行,即key: value,
d3 = {
"name": "Mary",
"age": 20,
"addr": "City",
"num": range(10),
}
print(d3)
# {'name': 'Mary', 'age': 20, 'addr': 'City', 'num': range(0, 10)}
d4 = {
"key1": None,
'key2': True,
'key3': range(10),
'key4': [1, 3, 5, 8],
'key5': {
'key51': {
'key511': "key5中的key51中的key511",
'key512': "key5中的key51中的key512"
},
'key52': ["key52中的列表"]
}
}
绝大多数都是字符串的类型;不可变数据类型也可以作为键,包括五种基本数据类型、元组。
d5 = {
None: "None可以作为键",
True: "True可作为键",
bool: "bool类型",
200: "int型",
3.14: "float型",
(2,): "不可变类型-元组类型",
# 列表和值不可以作为键的类型
# 键不可以重复,值可以重复
True: "重名的键,其中的值被后面的值覆盖",
"replace": "wait"
}
注意:字典是可变的数据类型,即字典不可以作为键。
字典的访问
print(d5[bool])
# bool类型
根据键进行修改
若访问的键值存在覆盖即可,没有则加入到字典中。
# 更改设置键,如果存在则覆盖
d5[bool] = "bool类型可以作为键"
# 原来没有则加入
d5["new"] = "新加的键值"
print(d5)
# {None: 'None可以作为键', True: '重名的键,其中的值被后面的值覆盖',
# : 'bool类型可以作为键', 200: 'int型', 3.14: 'float型',
# (2,): '不可变类型-元组类型', 'replace': 'wait', 'new': '新加的键值'}
for key in d5.keys():
print(key, d5[key])
for value in d5.values():
print(value)
for key, value in d5.items():
print(key, value)
for item in d5.items():
# 分别取到元组中的第一个与第二个内容,item的类型为元组
print(item[0], item[1], type(item))
# 找到所有的键key
print(d5.keys())
print(d5.values())
print(d5.items())
r = d5.pop(True)
print(r)
print(d5.popitem())
print(d5.clear())
若修改的键在字典中,则覆盖原来的内容;若要修改的键不在字典中则在字典中添加键值对。
d5.update({
"update1": "update1若原有列表没有则添加进去",
"replace": "若原有列表有,则覆盖原有内容"
})
前一个参数是可迭代的,作为key,后一个参数作为所有key的value。
print(dict.fromkeys(range(10), "ok"))
a = d5.setdefault(200, 500)
# 原来没有的加入字典中
r = d5.setdefault("sex","setdefault方法可更新原来没有的值")
print(a, r)
print(d5)
原来字典中存在返回键对应的值;原来没有返回None;不添加在原有字典中。
print(d5.get(bool))
print(d5.get(500))
print(d5.get(300, "okk"))
print(d5)
# bool类型
# None
# okk
# len 求键值对长度
print(len(d5))
for key in d5:
print(key)