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

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

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

需求

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

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

要求的格式:

{
	"北京市":[
      ['王*龙', '北京市海淀区苏州街大恒科技大厦南座4层'], 
      ['庞*飞', '北京市昌平区汇德商厦四楼403'],
      ....
  ],
  "山东省":[
     ['孙*云', '山东省济南市山东省济南市历下区祥泰汇东国际,一号楼3005室'], 
     ['鞠*龙', '山东省潍坊市玉清街江山帝景B区12号楼一单元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 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]
      
  3. 生成一个放入同一个省份数据的comm_pro[],使用str.startwith()函数循环遍历出同一省份的数据放入comm_pro[],将得到的同一省份的数据赋值给字典new_data[]清空comm_pro[],循环遍历下一省份的数据。流程图如下:

    开始
    条件a
    sdfk
    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 = [] #清空数据,存放下一省份数据
```

posted @ 2021-12-02 23:26  visionwpc  阅读(752)  评论(0编辑  收藏  举报