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 = [] #清空數據,存放下一省份數據
```