dict
用于快速查询字典中内容
定义
dic = {key1:value1, key2:value2}
key是索引,value为值
dic = {
"bo":[24, "one", "jiangsu"],
"qiang":[23, "two", "zhoukou"],
"lie":[22, "three", "hengshui"],
"xiang":[23, "four", "zhumadian"],
"huang":[21,"five", "puyang"]
}
print("xiang" in dic)
true
特性
1.key-value 结构
2.key必须是不可变数据类型(字符串或者是数字),必须唯一,不能用列表
3.value值可以修改,可以不唯一,可以用列表
4.无序存放,有序字典:ordered_dict列表是索引,字典直接用key
5.查询速度快,不受dic大小影响
6.当key多次出现时,则查询以最后一次出现为准
对字典的操作
增加
dic["jong"] = [22, "six", "shangcai"]
note:当添加的key值已经存在时,则原先的value被替换成新的value
删除
n = dic.pop("jong") # 指定key删除
del dic["xiang"] # 指定key删除
dic.clear() # 清空字典
使用dic.pop()时可将删除的value赋值给变量
查找
dic("xiang")
note:只可以用key查找,而不是用value
dic.keys() #以列表形式返回dic中所用的key 列表名为dic_keys
dic.values() #以列表形式返回所有的value 列表名为 dic_values
dic.items() #将字典转换成列表,其中key索引为0 value索引为1
循环
for k in dic.keys(): # 循环key
print(k)
for k,v in dic.items(): #循环key和value
print(k, v)
for k in dic: #循环key和value
print(k, dic[k]) # 此时效果和 for k,v in dic.items(): 一样,仅仅是需要key时只用k即可
求长度
n =len(dic) # 将长度赋值给变量,同时可用于字符串和列表
嵌套
dic["dic1"] = {"li":[24, "seven", "dongbei"]} # 循环嵌套
dic1 {‘li’: [24, ‘seven’, ‘dongbei’]}
寻找时字典两层嵌套
dic["dic1"]
实例
快递分拣 按省份区分
inf = [
['王*名', '北京市海淀街重阳路大厦4层'],
['孙*化', '北京市昌平区哈哈哈哈路大厦3层'],
['李*以', '浙江省杭州市海淀街重阳路大厦4层'],
['赵*哈', '上海市海淀街重阳路大厦4层'],
['钱*的', '上海市海淀街重阳路大厦4层'],
['吴*看', '湖北省武汉市海淀街重阳路大厦4层'],
['代*睿', '湖北省武汉市海淀街重阳路大厦4层'],
['李*名', '河北省石家庄市海淀街重阳路大厦4层'],
['贺*佳', '河北省石家庄海淀街重阳路大厦4层'],
['何*名', '四川省重庆市海淀街重阳路大厦4层'],
['倪*昵', '四川省重庆市海淀街重阳路大厦4层'],
['张*名', '北京市海淀街重阳路大厦4层'],
['甲*名', '北京市海淀街重阳路大厦4层'],
['乙*8', '北京市海淀街重阳路大厦4层'],
['丙*名', '北京市海淀街重阳路大厦4层'],
]
add = []
pro_add = {}
for i in inf:
# print(i)
add1 = i[1][:3]
if add1 in add:
pro_add[add1].append(i)
else:
add.append(add1)
pro_add[add1] = i
for i in pro_add:
print(i, pro_add[i])