当前位置:   article > 正文

python 小程序——快递分拣程序_路飞学城快递分拣小程序

路飞学城快递分拣小程序

python 小程序——快递分拣程序

学习了字符串,列表以及字典的操作后,动手写一个快递分拣的小程序。

需求

将给出的快递地址转换为要求的字典格式:
给出的数据源:

[
    ['谢*星', '甘肃省酒泉市雄关路54号东风物流十号'],
	['侯*', '河南省郑州市河南省郑州市高新区莲花街牡丹路西雅图荣邦城'],
	['孙*康', '江苏省+
	['杨*康', '北京市丰台区丰台科技园汉威广场12栋'],
]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

要求的格式:

{
	"北京市":[
      ['王*龙', '北京市海淀区苏州街大恒科技大厦南座4层'], 
      ['庞*飞', '北京市昌平区汇德商厦四楼403'],
      ....
  ],
  "山东省":[
     ['孙*云', '山东省济南市山东省济南市历下区祥泰汇东国际,一号楼3005室'], 
     ['鞠*龙', '山东省潍坊市玉清街江山帝景B区12号楼一单元14楼'], 
     ['张*', '山东省济南市兴港路三庆城市主人']
     ....
  ],
  .... 
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

思路

  1. 使用字符的切片操作,首先提取地址前三个字符(省份),生成一个list列表;

  2. 生成的列表当中肯定有重复的,去除列表中重复值,有三种方法

    • 使用内置函数

      list1 = [1, 2, 3, 3, 4, 4, 5, 6, 6, 6, 7, 8, 9]
      list2 = list(set(list1))
      print(list2)
      
      • 1
      • 2
      • 3
    • 遍历去除重复

      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
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
    • 列表推导式

      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]
      
      • 1
      • 2
      • 3
  3. 生成一个放入同一个省份数据的comm_pro[],使用str.startwith()函数循环遍历出同一省份的数据放入comm_pro[],将得到的同一省份的数据赋值给字典new_data[]清空comm_pro[],循环遍历下一省份的数据。流程图如下:

    遍历省份如北京
    循环结束
    打印new_data
    遍历数据源
    是否以北京开头
    放入comm_pro
    循环结束
    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 = []                #清空数据,存放下一省份数据 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

完整代码

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])


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72

输出效果

image-20211203014832581

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/271168
推荐阅读
相关标签
  

闽ICP备14008679号