在Python中,字典的格式很简单,一个大括号里有一组KV对,即key:value,一个键key对应一个值value。键必须是唯一的,但值则不必是唯一的
字典是可变数据类型,即字典的数据发生变化,字典这个对象在内存里的地址不会变化;但是字典的key值必须是不可变数据类型,如字符串,数字或元组。
1、创建
# :左边不能重复,且不可变类型"" or''都可以
my_dict = {
'name' : 'KENNY',
'city' : "xi'an",
'code' : 'python'
}
print(my_dict) # {'name': 'KENNY', 'city': "xi'an", 'code': 'python'}
# 输出时一定要与字典里的键一样
# 虽然字典里有name这个键,但是字典里的key是字符串类型的,所以查询的时候也需要是字符串格式的
# print(my_dict[name]) # NameError: name 'name' is not defined
print(my_dict['name']) # KENNY
2、增加
# 直接增加:dic1['KEY'] = value -->若之前有KEY,则会覆盖。若没有KEY,则新增至尾处
my_dict['age'] = 18
print(my_dict) # {'name': 'KENNY', 'city': "xi'an", 'code': 'python', 'age': 18}
# 用dic.setdefault('KEY',value/None) --->若之前有KEY,则不修改。若没有KEY,则新增至尾处
my_dict.setdefault('sex', 'male')
print(my_dict) # {'name': 'KENNY', 'city': "xi'an", 'code': 'python', 'age': 18, 'sex': 'male'}
3、删除
my_dict = {
'name': 'KENNY',
'city': "xi'an",
'code': 'python',
'sex': 'red'
}
# 1、用dic.pop('KEY')--->按KEY删除,有返回值,返回值为value,若没有KEY则报错。
# 注:没有KEY时,采用dic.pop("KEY",None/'自定义')则不报错,会返回自定义的返回值。即可设置返回值
temp = my_dict.pop('sex')
print(temp) # red
print(my_dict) # {'name': 'KENNY', 'city': "xi'an", 'code': 'python'}
# 2、用dic.popitem()--->随机删除KEY:value,返回(KEY,value)元祖
temp = my_dict.popitem()
print(temp) # ('code', 'python')
print(my_dict) # {'name': 'KENNY', 'city': "xi'an"}
# 3、用del dic['KEY']--->删除KEY:value。没有KEY则报错
del my_dict['name']
print(my_dict) # {'city': "xi'an"}
# 4、用dic.clear()--->清空字典
my_dict.clear()
print(my_dict) # {}
# 5、用del dic ---->删除字典
del my_dict
print(my_dict) # NameError: name 'my_dict' is not defined
4、修改
my_dict = {
'name': 'KENNY',
'city': "xi'an",
'code': 'python',
'sex': 'red'
}
# 直接改
print(my_dict) # {'name': 'KENNY', 'city': "xi'an", 'code': 'python', 'sex': 'red'}
my_dict['name'] = 'Kenny'
print(my_dict) # {'name': 'Kenny', 'city': "xi'an", 'code': 'python', 'sex': 'red'}
# 更新字典:dic2.update(dic1) --->将dic1中所有的KEY:value更新到dic2中。相同KEY更新,不同KEY直接增加。dic1不变,
#::重要::循环一个字典时,不能删除字典的键值对
your_dict = {
'name': 'Jone',
'city': "beijing",
'code': 'python',
'height': '180cm'
}
my_dict.update(your_dict)
print(my_dict) # {'name': 'Jone', 'city': 'beijing', 'code': 'python', 'sex': 'red', 'height': '180cm'}
5、查找
my_dict = {
'name': 'KENNY',
'city': "xi'an",
'code': 'python',
'sex': 'red'
}
# 1、print(dic.keys())--->输出一个列表,类型是dict_keys,其内容是所有的KEY值,
print(my_dict.keys()) # dict_keys(['name', 'city', 'code', 'sex'])
# 循环输出:for i in dic: print(i)等同于for i in dic.keys():print(i)--->输出KEY
for i in my_dict:
print(i)
"""
name
city
code
sex
"""
for i in my_dict.keys():
print(i)
"""
name
city
code
sex
"""
# 2、print(dic.values())--->输出一个列表,类型是dict_values,其内容是所有的value值
print(my_dict.values()) # dict_values(['KENNY', "xi'an", 'python', 'red'])
# 循环输出for i in dic.values():print(i) --->输出所有的value
for i in my_dict.values():
print(i)
"""
KENNY
xi'an
python
red
"""
# 3、print(dic.items())--->输出一个列表,其类型是dict_items,其内容是所有的(KEY,value)
print(my_dict.items()) # dict_items([('name', 'KENNY'), ('city', "xi'an"), ('code', 'python'), ('sex', 'red')])
# 循环输出1:for i in my_dict.items():print(i)--->输出所有的(KEY,value)元祖
for i in my_dict.items():
print(i)
"""
('name', 'KENNY')
('city', "xi'an")
('code', 'python')
('sex', 'red')
"""
# 循环输出2:for k,v in dic.items():print(i)--->输出所有的KEY value
for key,value in my_dict.items():
print(f'{key}:{value}')
"""
name:KENNY
city:xi'an
code:python
sex:red
KENNY
"""
# 4、print(dic['KEY'])--->输出对应的value值,若没有KEY值则会报错
# 注:print(dic.get(KEY,None/"自定义"))--->输出对应的value值,若没有KEY值则返回自定义值
print(my_dict['name']) # KENNY