Python 字典操作

字典是 python 中唯一的映射类型,使用键值对(key-value)的形式存储数据。其中 key 必须为不可变类型。字典有两大特点: 无序,键唯一。

不可变类型有:整型,字符串,元组

可变类型有:列表,字典

创建字典

dic1={"name": "klvchen", "age": 25}
dic2=dict((('name','klvchen'),('age',25)))
dic3=dict((('city','guangzhou'),)) # 只有一个键值对的时候,右边必须补 
dic4=dict([['city','guangzhou'],]) dic5
=dict(name="klvchen", age=25) # 注意,这里传入关键字参数的做法。参数的等号左边必须为一个变量,右边必须为一个值 print(dic1) print(dic2) print(dic3) print(dic4)
print(dic5)
结果:

{'name': 'klvchen', 'age': 25}
{'name': 'klvchen', 'age': 25}
{'city': 'guangzhou'}
{'city': 'guangzhou'}
{'age': 25, 'name': 'klvchen'}

fromkeys 方法

dic1 = dict.fromkeys(['host1', 'host2', 'host3'], 'well')
print(dic1)
结果:
{'host3': 'well', 'host1': 'well', 'host2': 'well'}


dic2 = dict.fromkeys(['host1', 'host2', 'host3'], ['well1', 'well2'])
print(dic2)
结果:
{'host3': ['well1', 'well2'], 'host1': ['well1', 'well2'], 'host2': ['well1', 'well2']}

增加操作

dic1={"name": "klvchen"}
dic1["age"] = 28
print(dic1)

setdefault 方法
res = dic1.setdefault("age",29)    # 键key存在,故返回原来的值
print(res)

res = dic1.setdefault("sex", 'male') # 键key不存在,故返回新值
print(res)
print(dic1)
结果:

{'name': 'klvchen', 'age': 28}
28
male
{'name': 'klvchen', 'age': 28, 'sex': 'male'}

 

查操作

dic1={'name': 'klvchen', 'age': 28, 'sex': 'male'}

print(dic1['name'])     #通过键去查找
结果:
klvchen
dic1={'name': 'klvchen', 'age': 28, 'sex': 'male'}

print(dic1.keys())       #列出所有的 key
print(list(dic1.keys())) #把key格式化为数组格式
结果:
dict_keys(['name', 'sex', 'age']) ['name', 'sex', 'age']
dic1={'name': 'klvchen', 'age': 28, 'sex': 'male'}
 
print(list(dic1.values()))     #列出所有的值
结果:
['klvchen', 'male', 28]
dic1={'name': 'klvchen', 'age': 28, 'sex': 'male'}

print(list(dic1.items()))    #列出所有的 key 和 值

结果:
[('name', 'klvchen'), ('sex', 'male'), ('age', 28)]
dic1={'name': 'klvchen', 'age': 28, 'sex': 'male'}
print(dic1.get('name'))

运行结果:
klvchen
dic1={'name': 'klvchen', 'age': 28}

print(dic1.get('obj'))

print(dic1.get('sex', 'male'))

运行结果:
None
male
dic1={'name': 'klvchen', 'age': 28, 'sex': 'male'}

print('name' in dic1)         #  如果键在字典里返回true,否则返回false。   

运行结果:       
True        

 改操作

dic1 = {'name': 'klvchen', 'age': 28, 'sex': 'male'}
dic1["age"] = 25
print(dic1)
结果:
{'sex': 'male', 'age': 25, 'name': 'klvchen'}
dic1 = {'name': 'klvchen', 'age': 28, 'sex': 'male'}
dic2 = {"age": 25, "city": "guangzhou"}
dic1.update(dic2)
print(dic1)
结果:
{'sex': 'male', 'age': 25, 'city': 'guangzhou', 'name': 'klvchen'}

删操作

del 方法

dic1 = {'name': 'klvchen', 'age': 28, 'sex': 'male'}
del dic1['age']
print(dic1)
结果:
{'name': 'klvchen', 'sex': 'male'}

------------------------------------------------------------
dic1 = {'name': 'klvchen', 'age': 28, 'sex': 'male'}
del dic1
print(dic1)
结果:
NameError: name 'dic1' is not defined

注意,这里已把 dic1 这个字典从内存中删除,所以程序报错

pop方法 #删除字典中指定的键值对,并返回该键的值

dic1 = {'name': 'klvchen', 'age': 28, 'sex': 'male'}
res = dic1.pop('age')
print(dic1)
print(res)
结果:

{'sex': 'male', 'name': 'klvchen'}
28

popitem 方法 # 随机删除某组键值对,并以元组的方式返回删除的值

dic1 = {'name': 'klvchen', 'age': 28, 'sex': 'male'}
res = dic1.popitem()
print(dic1)
print(res)
结果:

{'name': 'klvchen', 'sex': 'male'}
('age', 28)

排序操作

sorted方法:

dic1 ={'a': 111, 'k': 222, 'c': 333}
print(sorted(dic1))
print(sorted(dic1.items()))
结果:
['a', 'c', 'k']
[('a', 111), ('c', 333), ('k', 222)]

遍历操作

dic1 ={'a': 111, 'k': 222, 'c': 333}
for i in dic1:
    print(i,dic1[i])
结果:
c 333
a 111
k 222
dic1 ={'a': 111, 'k': 222, 'c': 333}
for i in dic1.items():
     print(i)
结果:
('c', 333)
('a', 111)
('k', 222)
dic1 ={'a': 111, 'k': 222, 'c': 333}
for k,v in dic1.items():
     print(k, v)
结果:
k 222
a 111
c 333

 

字典与字符串相互转换

a = str({'GuangZhou':{'region','tianhe'}})
print(type(a))
a=eval(a)
print(type(a))
print(a['GuangZhou'])
结果:

<class 'str'>
<class 'dict'>
{'tianhe', 'region'}

原文地址:https://www.cnblogs.com/klvchen/p/8623945.html