Python中字典的操作

字典是python中的唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,例如:数字、字符串、元组。

字典是python中除列表以外最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者区别:字典中的元素是通过键来存取的,而不是通过偏移存取。

(能用作键)不可变类型:整型,字符串,元组

(不能用作键)可变类型:列表,字典

1.新建字典

dic1 = {333:'333str', 'strsss': ('y元组1', 'hhhhh'), ('Mac', 90000):123123}

print(dic1)#{333: '333str', 'strsss': ('y元组1', 'hhhhh'), ('Mac', 90000): 123123

dic2 =dict(((0, 33), ('sss', 'dhsjh')))

print(dic2)#{0: 33, 'sss': 'dhsjh'}

2.增加字典元素

dic3 = {}

dic3['name'] ='what is your name'

print(dic3)#{'name': 'what is your name'}

dic3['age'] =33

# dic3['age'] = input("shurunianling :")

print(dic3)#{'name': 'what is your name', 'age': 33}

newv = dic3.setdefault('kkk', 333)# 假如原来没有这个值,那么增加新的键值对,返回这个键值对的值

print(newv)#333

print(dic3)#{'name': 'what is your name', 'age': 33, 'kkk': 333}

yuanlaiv = dic3.setdefault('kkk', 3333333)# 假如原来有这个值,那么不会改动原来的值,但是返回一个原来的值

print(yuanlaiv)#333

print(dic3)#{'name': 'what is your name', 'age': 33, 'kkk': 333}

3.# 查 通过键取查找

dic4 = {'a':1, "b":True, "c":"ccc"}

print(dic4["a"])#1

print(list(dic4.keys()))#['a', 'b', 'c']

print(list(dic4.values()))#[1, True, 'ccc']

print(list(dic4.items()))#[('a', 1), ('b', True), ('c', 'ccc')]

4.# 改 跟列表一样

dic5 = {'a':1, "b":True, "c":"ccc", "d":"ddddd"}

dic5['b'] ="dddd"

print(dic5)#{'a': 1, 'b': 'dddd', 'c': 'ccc', 'd': 'ddddd'}

dic4.update(dic5)# 把dic5中的键值对全部加入到dic4中,如果有相同的key,那么覆盖,如果没有则添加

print(dic4)#{'a': 1, 'b': 'dddd', 'c': 'ccc', 'd': 'ddddd'}

print(dic5)#{'a': 1, 'b': 'dddd', 'c': 'ccc', 'd': 'ddddd'}

5# 删

dic6 = {'a':"a", "b":"b", "c":"ccc", "d":"ddddd"}

# del dic6['a'] #删除指定项

# del dic6#删除整个字典

# print(dic6)#{'b': 'b', 'c': 'ccc', 'd': 'ddddd'}

# dic6.clear() #清空

# print(dic6)#{}

# pops = dic6.pop('c')#删除指定的键值对,返回改键值对的值

# print(pops)  # ccc

# print(dic6)  # {'a': 'a', 'b': 'b', 'd': 'ddddd'}

# popitems = dic6.popitem()#随机删除某组键值对,并以元组方式返回值

# print(popitems)  # 随机删除 ('d', 'ddddd')

# print(dic6)  # {'a': 'a', 'b': 'b', 'c': 'ccc'}

6# dict.fromkeys 新建字典,

dic7 =dict.fromkeys(['c1', 'c2', 'c3'], 'aaaaaa')

print(dic7)

# 问题:

dic7['c2'] ="sdfajdfj"

print(dic7)# 正常情况

dic7 =dict.fromkeys(['c1', 'c2', 'c3'], ['aaaaaa', 'bbb'])

print(dic7)

dic7['c2'][1] ='只是改变c2中的bbb就好了'

print(

dic7)# 全部修改了,{'c1': ['aaaaaa', '只是改变c2中的bbb就好了'], 'c2': ['aaaaaa', '只是改变c2中的bbb就好了'], 'c3': ['aaaaaa', '只是改变c2中的bbb就好了']}

7# 排序

print(sorted(dic7))#

8遍历

dic8 = {'a':"a", "b":"b", "c":"ccc", "d":"ddddd"}

for iin dic8:

print(i)# 默认返回的键

第二种方法:

for k, vin dic8.items():

print(k, v)# 效率低,不推荐使用

你可能感兴趣的:(Python中字典的操作)