赞
踩
学习了字符串,列表以及字典的操作后,动手写一个快递分拣的小程序。
将给出的快递地址转换为要求的字典格式:
给出的数据源:
[
['谢*星', '甘肃省酒泉市雄关路54号东风物流十号'],
['侯*', '河南省郑州市河南省郑州市高新区莲花街牡丹路西雅图荣邦城'],
['孙*康', '江苏省+
['杨*康', '北京市丰台区丰台科技园汉威广场12栋'],
]
要求的格式:
{
"北京市":[
['王*龙', '北京市海淀区苏州街大恒科技大厦南座4层'],
['庞*飞', '北京市昌平区汇德商厦四楼403'],
....
],
"山东省":[
['孙*云', '山东省济南市山东省济南市历下区祥泰汇东国际,一号楼3005室'],
['鞠*龙', '山东省潍坊市玉清街江山帝景B区12号楼一单元14楼'],
['张*', '山东省济南市兴港路三庆城市主人']
....
],
....
}
使用字符的切片操作,首先提取地址前三个字符(省份),生成一个list列表;
生成的列表当中肯定有重复的,去除列表中重复值,有三种方法
使用内置函数
list1 = [1, 2, 3, 3, 4, 4, 5, 6, 6, 6, 7, 8, 9]
list2 = list(set(list1))
print(list2)
遍历去除重复
1 list1 = [1, 2, 3, 3, 4, 4, 5, 6, 6, 6, 7, 8, 9]
2 list2 = list(set(list1))
3 print(list2)1 list1 = [1, 2, 3, 3, 4, 4, 5, 6, 6, 6, 7, 8, 9]
2 list2=[]
3 for i in list1:
4 if not i in list2:
5 list2.append(i)
6 print(list2)
列表推导式
1 list1 = [1, 2, 3, 3, 4, 4, 5, 6, 6, 6, 7, 8, 9]
2 list2=[]
3 [list2.append(i) for i in list1 if not i in list2]
生成一个放入同一个省份数据的comm_pro[]
,使用str.startwith()
函数循环遍历出同一省份的数据放入comm_pro[]
,将得到的同一省份的数据赋值给字典new_data[]
清空comm_pro[]
,循环遍历下一省份的数据。流程图如下:
comm_pro = []
for i in province:
for j in source_data:
if j[1].startswith(i):
comm_pro.append(j)
new_data[i] = comm_pro #向字典写入同一个省份的数据
comm_pro = [] #清空数据,存放下一省份数据
source_data = [ ['王*龙', '北京市海淀区苏州街大恒科技大厦南座4层'], ['庞*飞', '北京市昌平区汇德商厦四楼403'], ['顾*锐', '江苏省扬州市三垛镇工业集中区扬州市立华畜禽有限公司'], ['王*飞', '上海市徐汇区上海市徐汇区H88越虹广场B座5E'], ['华*升', '北京市海淀区杰睿大厦'], ['朱*锴', '上海市浦东新区川沙新镇华川家园33号楼503'], ['陈*盼', '浙江省杭州市闲林街道,西溪华东园,十幢一单元401。'], ['司*鹏', '河南省鹤壁市淇滨大道310号 鹤壁京立医院'], ['聂*睿', '河北省石家庄市中山路勒泰中心写字楼b座11层'], ['张*', '辽宁省本溪市明兴丽城九号楼四单元'], ['冉*晗', '河北省石家庄市体育南大街385号'], ['高*杰', '北京市朝阳区广渠路42号院3号楼,408'], ['李*国', '安徽省合肥市新站区淮合花园'], ['常*源', '江苏省南京市白下路242号,南京市红十字医院,放射科'], ['张*玉', '河北省沧州市新居然家居广场'], ['朱*', '江苏省镇江市延陵镇'], ['段*', '山东省临沂市银雀山街道万阅城A座1207'], ['朱*', '北京市昌平区北京联合大学昌平校区'], ['陈*章', '北京市昌平区沙河镇白沙路汇德商厦老男孩教育'], ['肖*雅', '北京市昌平区沙河汇德商厦4楼老男孩儿教育'], ['赵*明', '北京市昌平区沙河顺沙路汇德商厦老男孩教育403'], ['邹*', '宁夏银川市上海路福州街口云峰盛大药房'], ['袁*', '辽宁省锦州市辽宁省凌海市国庆路33B号2单元23室'], ['陈*', '浙江省杭州市昌化电站里56号骏程瓷砖店'], ['索*辉', '辽宁省沈阳市浑南区创新路117号东软医疗系统有限公司'], ['李*', '北京市大兴区天宫院地铁站熙悦春天小区'], ['张*', '陕西省西安市电子城街道高新领域4号楼'], ['王*', '山西省吕梁市一家庄小区三期五号楼'], ['钟*', '陕西省商洛市商洛学院'], ['薛*', '江苏省泰州市口岸街道向阳北路94号农商行'], ['张*强', '甘肃省兰州市北滨河西路666号(中国移动甘肃分公司)'], ['张*锋', '内蒙古呼和浩特市双河镇莹昱佳苑商铺A段13号(防汛东巷莲爱粮油副食门市)'], ['刘*龙', '河南省洛阳市新一中文印室'], ['李*', '陕西省西安市临潼区西安科技大学'], ['徐*龙', '安徽省合肥市长江西路新加坡花园城4联排'], ['杨*杰', '山西省忻州市京原南路雷神网咖'], ['朱*北', '海南省海口市和平北路三亚上二街9号'], ['朱*', '浙江省杭州市龙湖春江郦城'], ['常*磊', '北京市海淀区学院南路59号'], ['王*阳', '江苏省南京市南京江宁21世纪现代城'], ['谢*星', '甘肃省酒泉市雄关路54号东风物流十号'], ['侯*', '河南省郑州市河南省郑州市高新区莲花街牡丹路西雅图荣邦城'], ['孙*康', '江苏省南京市化工园方水东路9号'], ['索*华', '北京市昌平区北七家镇东三旗村委会'], ['王*', '陕西省西安市十里铺街长力小区北门对面(王家辣子面)'], ['姜*生', '北京市朝阳区东大桥宫宵国际1103'], ['顾*生', '安徽省阜阳市清河西路100号阜阳师范学院'], ['申*伟', '上海市青浦区巷佳华苑三期10号楼904室'], ['刘*', '湖北省武汉市左岭新城1社区15栋'], ['单*成', '山东省日照市日照职业技术学院'], ['韩*红', '上海市杨浦区隆昌路619号10号楼二楼'], ['魏*琪', '北京市丰台区汉威国际广场4区12号楼'], ['杨*康', '北京市丰台区丰台科技园汉威广场12栋'], ] new_data = {} #需要的样式字典 province = [] #提取数据源中的省份 for i in source_data: province.append(i[1][0:3]) province = list(set(province)) #去除重复省份 comm_pro = [] #存放同省份数据的列表 for i in province: for j in source_data: if j[1].startswith(i): comm_pro.append(j) new_data[i] = comm_pro #向字典写入同一个省份的数据 comm_pro = [] for i in new_data: print(i, new_data[i])
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。