第七章 组合数据-4字典Dictionary
字典可存储任意类型对象。字典的每个键值对 key=>value用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,举例如下所示:
dict = {'Name': 'AJ', 'Age': 7, 'Class': 'Miss daisy'}
print(dict['Name'],dict['Age'],dict['Class']) #AJ 7 Miss daisy
print(dict) #{'Name': 'AJ', 'Age': 7, 'Class': 'Miss daisy'}
dict['Age'] = 8 # 更新
dict['School'] = "CUP" # 添加
print(dict) # {'Name': 'AJ', 'Age': 8, 'Class': 'Miss daisy', 'School': 'CUP'}
del dict['Name'] # 删除键是'Name'的条目
dict.clear() # 清空字典所有条目
del dict # 删除字典


dict1 = {'user': 'CISE', 'num': [6, 1, 4]}
dict2 = dict1 # 直接赋值,dict2是dict1引用
dict3 = dict1.copy() # 浅拷贝
print(id(dict1),id(dict2),id(dict3))
# 修改 data 数据
dict1['user'] = 'CUP'
dict1['num'].remove(1)
# 输出结果
print(dict1)
print(dict2)
print(dict3)
运行结果如下:
{'user': 'CUP', 'num': [6, 4]}
{'user': 'CUP', 'num': [6, 4]}
{'user': 'CISE', 'num': [6, 4]}
实例中 dict2 其实是 dict1 的引用(别名),所以输出结果都是一致的,dict3 父对象user-CISE进行了深拷贝,不会随dict1 修改而修改,子对象num-1是浅拷贝所以随 dict1 的修改而修改。
seq = ('CUP', 'CISE', '614')
dict = dict.fromkeys(seq)
print("新字典1为 : %s" % str(dict))
print("字典值 : %s" % dict.items())
dict2 = {'Address': '府学路18号' }
dict.update(dict2)
print("字典值 : %s" % dict.items())
dict = dict.fromkeys(seq, [1,2,3])
print("新字典2为 : %s" % str(dict))
print("Value : %s" % dict.get('CUP'))
dict.pop('CISE')
pop_obj=dict.popitem()
print(pop_obj)
print(dict)
运行结果如下:
新字典1为 : {'CUP': None, 'CISE': None, '614': None}
字典值 : dict_items([('CUP', None), ('CISE', None), ('614', None)])
字典值 : dict_items([('CUP', None), ('CISE', None), ('614', None), ('Address', '府学路18号')])
新字典2为 : {'CUP': [1, 2, 3], 'CISE': [1, 2, 3], '614': [1, 2, 3]}
Value : [1, 2, 3]
('614', [1, 2, 3])
{'CUP': [1, 2, 3]}
参考例子:
stulist=[]
studisc1={"name":"wangyan","sex":"male","IQ":10}
stulist.append(studisc1)
studisc2={"name":"pp","sex":"female","IQ":300}
stulist.append(studisc2)
studisc3={"name":"aa","sex":"male","IQ":300}
stulist.append(studisc3)
studisc4={"name":"huishan","sex":"male","IQ":15}
stulist.append(studisc4)
findname=input("input name:")
find=False
for s in stulist:
if s["name"]==findname:
find=True
print("找到了! Info:")
print(s)
break
if not find:
print("sorry,没找到!")
print("查找结束")
运行结果:
input name:qq
sorry,没找到!
查找结束
也可以使用下面方法:
stulist=[]
studisc1={"name":"wangyan","sex":"male","IQ":10}
stulist.append(studisc1)
studisc2={"name":"pp","sex":"female","IQ":300}
stulist.append(studisc2)
studisc3={"name":"aa","sex":"male","IQ":300}
stulist.append(studisc3)
studisc4={"name":"huishan","sex":"male","IQ":15}
stulist.append(studisc4)
findname=input("input name:")
find=False
for s in stulist:
if s["name"]==findname:
find=True
print("找到了! Info:")
print(s)
break
else:
print("sorry,没找到!")
print("查找结束")
运行结果:
input name:aa
找到了! Info:
{'name': 'aa', 'sex': 'male', 'IQ': 300}
查找结束
还可以使用字典加列表试一下名片管理系统,有点不好说呢。