info = {"id": 20190101, "name": "Tom", "age": 18} # key:value --->键值对
print(info)
'''
{"id": 20190101, "name": "Tom", "age": 18}
'''
字典是除列表以外python中使用最灵活的内置数据类型
字典是一种可变的数据类型
和列表的区别:
-
列表有序, 字典无序
-
列表通过索引(偏移)
-
访问元素, 字典通过键(key)访问元素
字典的基本格式
dic = {key1: value1, key2: value2, ...keyn:valuen}
#值可以取任意类型, 但键不可以, 必须为不可变数据类型, 即key必须可哈希.
# 可哈希 --->不可变
# 不可哈希 --->可变
创建空列表
dic = {}
print(type(dic))
'''
<class 'dict'>
'''
往空字典中添加元素
dic = {}
key1, key2, key3 = "id", "name", "age"
value1, value2, value3 = 20190101, "Tom", 18
dic = {key1: value1, key2: value2, key3: value3}
print(dic)
'''
{'id': 20190101, 'name': 'Tom', 'age': 18}
'''
强转
zip()
key = ("id", "name", "age")
value = (20190101, "Tom", 18)
print(list(zip(key,value)))
tp = dict(list(zip(key, value)))
print(tp, type(tp))
print(dict([("id", 20190101), ("name", "Tom"), ("age", 18)])) #转换的必须是一个对象
'''
[('id', 20190101), ('name', 'Tom'), ('age', 18)]
{'id': 20190101, 'name': 'Tom', 'age': 18} <class 'dict'>
{'id': 20190101, 'name': 'Tom', 'age': 18}
'''
dic = dict.fromkeys(["Tom", "Jack", "Lucy"], 666666)
print(dic)
'''
{'Tom': 666666, 'Jack': 666666, 'Lucy': 666666}
'''
增
往空字典中添加元素
dic = {}
dic["id"] = 20190101
dic["name"] = "Tom"
dic["age"] = 19
print(dic)
'''
{'id': 20190101, 'name': 'Tom', 'age': 19}
'''
往字典中添加新的键值对
dic1 = {"id": 20190101, "name": "Tom", "age": 19}
dic1["grade"] = 82 #原字典中没有的键
print(dic1)
print(dic1["id"])
'''
{'id': 20190101, 'name': 'Tom', 'age': 19, 'grade': 82}
'''
写一个程序,输入每组数对应的值,输出为[{“id”: 20190101, “name”: “Tom”, “age”: 19}, …{“id”: 20190101, “name”: “Tom”, “age”: 18}]的列表
li = []
while True:
dic = {}
id = int(input("id:"))
name = input("name:")
age = int(input("age:"))
dic["id"] = id
dic["name"] = name
dic["age"] = age
li.append(dic)
flag=input("continue?(y/n,不区分大小写)")
if flag.lower()=="n":
break
print(li)
dict.updata(dic)
把字典dic中的键值对(key:value)更新到dict中
- 两个字典的键完全不同,则将dic的键值对全部添加到dict中
- 存在相同键,则更新dict中对应的值
dic={"job":"IT","hobby":"Read"}
dic2={"name":"Jack","hobby":"Read"}
dict={"id":20190101,"name":"Tom"}
dict.update(dic2)
print(dict)
删
dict.pop()
- 格式:dict.pop(key[,default])
- 如果key存在于dict中,删除并返回dict[key]
- 如果不存在,给出默认值就返回默认值,未给出默认值,报错
dict.popitem()
- 随机删除一对键值对
- 有返回值的,返回形式为元组
dict = {"id": 20190101, "name": "Tom", "age": 22}
print(dict.popitem())
key, value = dict.popitem()
print(dict)
print(key, value) #最后剩下的键值对
'''
('age', 22)
{'id': 20190101}
name Tom
'''
del dict[key]
dict = {"id": 20190101, "name": "Tom", "age": 22}
del dict["age"]
print(dict)
'''
{'id': 20190101, 'name': 'Tom'}
'''
dict.clear()
dict = {"id": 20190101, "name": "Tom", "age": 22}
print(dict.clear())
print(dict)
'''
None
{}
'''
改
直接修改
dic = {"id": 20190101, "name": "Tom", "age": 22}
dic["id"] = 20190201
print(dic)
'''
{'id': 20190201, 'name': 'Tom', 'age': 22}
'''
dict.setdefault()
- 键存在,不改动,返回字典中的值
- 不存在,在字典中添加相应的键值对,并返回对应的值
dic = {"id": 20190101, "name": "Tom", "age": 22}
print(dic.setdefault("name", "Jack"))
print(dic)
print(dic.setdefault("salary", 12000))
print(dic)
'''
Tom
{'id': 20190101, 'name': 'Tom', 'age': 22}
12000
{'id': 20190101, 'name': 'Tom', 'age': 22, 'salary': 12000}
'''
查
字典值的访问
- 直接通过字典的key访问value
dic = {"id": 20190101, "name": "Tom", "age": 22}
print(dic["id"])
print(dic["job"]) # 不存在的键,结果报错
'''
20190101
Traceback (most recent call last):
File "D:/pycharm_test/day04/01.py", line 138, in <module>
print(dic["job"])
KeyError: 'job'
'''
dict.get()访问value
语法格式 dict.get(key[,default])
- 不确定字典中是否存在某个键而又想对其进行操作,比如获取值 -->get方法
- 当key不存在的时候,不会跑出异常,返回None
dic = {"id": 20190101, "name": "Tom", "age": 22}
print(dic.get("id"))
print(dic.get("id", 20190201))
print(dic.get("salary")) # 不存在,返回为None
print(dic)
print(dic.get("salary", 12000)) # 不会添加
print(dic)
'''
20190101
20190101
None
{'id': 20190101, 'name': 'Tom', 'age': 22}
12000
{'id': 20190101, 'name': 'Tom', 'age': 22}
'''
遍历
遍历出键dict.key()
dic = {"id": 20190101, "name": "Tom", "age": 22}
print(dic.keys(), type(dic.keys())) # dic.key()取出的键为列表形式
'''
dict_keys(['id', 'name', 'age']) <class 'dict_keys'>
'''
for key in dic.keys():
print(key)
'''
id
name
age
'''
遍历出值dict.values()
dic = {"id": 20190101, "name": "Tom", "age": 22}
for value in dic.values():
print(value)
'''
20190101
Tom
22
'''
遍历出键值对dict.items()
dic = {"id": 20190101, "name": "Tom", "age": 22}
for item in dic.items():
print(item)
'''
('id', 20190101)
('name', 'Tom')
('age', 22)
'''
dic = {"id": 20190101, "name": "Tom", "age": 22}
for key, value in dic.items():
print(key, ":", value)
'''
id : 20190101
name : Tom
age : 22
'''
根据列表li=li = [23, 34, 45, 22, 67, 89, 90, 99, 66, 45]生成一个字典,根据数字和60的比较分类
li = [23, 34, 45, 22, 67, 89, 90, 99, 66, 45]
li1 = []
li2 = []
dic = {}
for i in li:
if i >= 60:
li1.append(i)
else:
li2.append(i)
dic[">=60"] = li1
dic["<60"] = li2
print(dic)
'''
{'>=60': [67, 89, 90, 99, 66], '<60': [23, 34, 45, 22, 45]}
'''