python 小程序——快递分拣程序
学习了字符串,列表以及字典的操作后,动手写一个快递分拣的小程序。
需求
将给出的快递地址转换为要求的字典格式:
给出的数据源:
[
['谢*星', '甘肃省酒泉市雄关路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 = [] #清空数据,存放下一省份数据
#向字典写入同一个省份的数据
comm_pro = [] #清空数据,存放下一省份数据
```