Python基本数据类型——字典

字典是无序的可变的数据类型,字典的value可以是任意值,而key必须是可哈希的值(列表,字典不能作为字典的key),key必须是唯一的,一个key可以对应多个不同类型的value。

字典的定义

#方法1
>>> dct=dict.fromkeys(["a","b","c"],1)
>>> type(dct)
<class 'dict'>
>>> dct
{'a': 1, 'b': 1, 'c': 1}
>>> dct=dict.fromkeys([1,2,3])
>>> dct
{1: None, 2: None, 3: None}
#注意使用fromkeys方法,如果不给值默认为None
#方法2
>>> dct1={"name":"heitao","age":23,"love":["台球","乒乓球"]}
>>> type(dct1)
<class 'dict'>
>>> dct1
{'name': 'heitao', 'age': 23, 'love': ['台球', '乒乓球']}

字典是可变类型,那么我们一一来学习字典的增删改查

==================================增
1:为字典增加一个键值对
>>> dct1
{'name': 'heitao', 'age': 23, 'love': ['台球', '乒乓球']}
>>> dct1["job"]="IT"
>>> dct1
{'name': 'heitao', 'age': 23, 'love': ['台球', '乒乓球'], 'job': 'IT'}
2:将一个字典更新到本字典
>>> dct1.update(dct)
>>> dct1
{'name': 'heitao', 'age': 23, 'love': ['台球', '乒乓球'], 'job': 'IT', 1: None, 2: None, 3: None}
==================================删
1:删除一对键值对
>>> dct1
{'name': 'heitao', 'age': 23, 'love': ['台球', '乒乓球'], 'job': 'IT', 1: None, 2: None, 3: None}
>>> dct1.pop(1)
>>> dct1
{'name': 'heitao', 'age': 23, 'love': ['台球', '乒乓球'], 'job': 'IT', 2: None, 3: None}
2:随机删除键值对
>>> dct1
{'name': 'heitao', 'age': 23, 'love': ['台球', '乒乓球'], 'job': 'IT', 2: None, 3: None}
>>> dct1.popitem()
(3, None)
3:根据切片索引的方式删除
#比如字典dct1中的爱好有乒乓球,我需要删除掉,如下
>>> dct1
{'name': 'heitao', 'age': 23, 'love': ['台球', '乒乓球'], 'job': 'IT', 2: None}
>>> del dct1["love"][1]
>>> dct1
{'name': 'heitao', 'age': 23, 'love': ['台球'], 'job': 'IT', 2: None}
4:删除字典
>>> dct
{2: None, 3: None}
>>> dct={}
>>> dct
{}
>>> del dct
==================================改
对字典修改就是直接赋值,如下我们把台球修改为乒乓球
>>> dct1
{'name': 'heitao', 'age': 23, 'love': ['台球'], 'job': 'IT', 2: None}
>>> dct1["love"][0]="乒乓球"
>>> dct1["love"]=["乒乓球"]
>>> dct1
{'name': 'heitao', 'age': 23, 'love': ['乒乓球'], 'job': 'IT', 2: None}
我们在爱好里加个台球,如下
>>> dct1["love"].append("台球")
>>> dct1
{'name': 'heitao', 'age': 23, 'love': ['乒乓球', '台球'], 'job': 'IT', 2: None}
==================================查
1:查看某个key的值
#方法1
>>> dct1["name"]
'heitao'
>>> dct1[1]
Traceback (most recent call last):
  File "<pyshell#44>", line 1, in <module>
    dct1[1]
KeyError: 1
#方法2
>>> dct1.get(1)
#注意:如果用get方法即时key不存在也不会抛出异常
#方法3
>>> dct1.setdefault("name")
'heitao'
>>> dct1.setdefault(1)
>>> dct1
{'name': 'heitao', 'age': 23, 'love': ['乒乓球', '台球'], 'job': 'IT', 2: None, 1: None}
>>> dct1.setdefault("addr","BJ")
'BJ'
{'name': 'heitao', 'age': 23, 'love': ['乒乓球', '台球'], 'job': 'IT', 2: None, 1: None}
#注意:setdefault方法如果key存在,直接返回,如果key不存在并且没给value,则加到字典中,如果给了value则直接添加并返回
2:查看字典中所有的key
>>> dct1.keys()
dict_keys(['name', 'age', 'love', 'job', 2, 1, 'addr'])
3:查看字典中所有的value
>>> dct1.values()
dict_values(['heitao', 23, ['乒乓球', '台球'], 'IT', None, None, 'BJ'])
4:查看字典中的键值对
>>> dct1.items()
dict_items([('name', 'heitao'), ('age', 23), ('love', ['乒乓球', '台球']), ('job', 'IT'), (2, None), (1, None), ('addr', 'BJ')])

字典也是一个可迭代对象,遍历字典如下

#方法1(for循环)
>>> for i in dct1:
	print(i,dct1[i])

	
name heitao
age 23
love ['乒乓球', '台球']
job IT
2 None
1 None
addr BJ
#方法2(items方法)
>>> for k,v in dct1.items():
	print(k,v)

	
name heitao
age 23
love ['乒乓球', '台球']
job IT
2 None
1 None
addr BJ

字典和字符串直接的转换,如下

>>> test=input("输入一个字典:")
输入一个字典:{"name":"heitao","age":23}
>>> type(test)
<class 'str'>
>>> test
'{"name":"heitao","age":23}'
>>> eval(test)
{'name': 'heitao', 'age': 23}
>>> type(eval(test))
<class 'dict'>

猜你喜欢

转载自blog.csdn.net/spades_linux/article/details/81110514