首先,在网上拿到一份数据,省份和城市的对应表:

第一张图是省份以及对应的ID

第二张图是省份和城市,以及分别对应的ID

基本的思路是:实现一个字典,省份作为键,省份包含的城市作为值,举个例子:{“江苏省”:“南京市”,“苏州市”,··· “徐州市”}。

下面用代码实现:

1. 改变工作目录

1 importos2 importpandas as pd3 os.chdir(r'D:\inde\machineLearning\python\Province_city\xml')

2.1 导入省份数据(也就是图1)

with open('Provinces.txt','r',encoding='utf-8') as f:

file= f.read().strip().split('\n')

num=[]

province=[]for fi in file[2:36]:

str1= fi.split('"')

m= str1[1]

n= str1[3]

num.append(m)

province.append(n)

3.1 合并省份数据

province = pd.concat([pd.DataFrame(num),pd.DataFrame(province)],axis=1)

province.columns= ['id','province']

province.head(2)

2.2 导入省份和城市数据(图2)

p_id =[]

c_id=[]

c_name=[]

with open('Cities.txt','r',encoding='utf-8') as f:

file= f.read().strip().split('\n')for fi in file[2:347]:

str2= fi.split('"')

m= str2[1]

c= str2[3]

i= str2[5]

p_id.append(i)

c_id.append(m)

c_name.append(c)

3.2 合并城市和省份数据

city = pd.concat([pd.DataFrame(p_id),pd.DataFrame(c_id),pd.DataFrame(c_name)],axis=1)

city.columns= ['id','c_id','city']

city.head(2)

4. 将上面两份数据merge在一起

province_city=pd.merge(city,province,on='id',how='left')

得到的输出结果如下图:

5. 1 因为本人想要处理的数据里面没有“省”,“市”的后缀,所以把后缀去掉

def delete_postfix1(s,str,zizhi=None):if s[-1]==str:return s[0:-1]else:returns

province_city.city= province_city.city.apply(lambda s:delete_postfix1(s,'市'))

province_city.province= province_city.province.apply(lambda s:delete_postfix1(s,'省'))

province_city.province= province_city.province.apply(lambda s:delete_postfix1(s,'市'))

5.2 同样,把自治区的后缀去掉

defdelete_postfix2(s,str):if s[0]=='内':return s[0:3]elif s[-3:]==str:return s[0:2]else:returns

province_city.province= province_city.province.apply(lambda s:delete_postfix2(s,'自治区'))

province_city.province= province_city.province.apply(lambda s:delete_postfix1(s,'省'))

province_city.province= province_city.province.apply(lambda s:delete_postfix1(s,'市'))

6 保存数据

province_city.to_csv('province_city.csv',index=0)

7. 转为字典格式

dicts ={}for i inrange(len(province.province)):

k=province.province[i]

province.id[i]==province_city.id

v=list(province_city[province.id[i]==province_city.id].city)

dict={k:v}

dicts.update(dict)

8. 看一下初步的输出结果

到此为止,跟我们预想的完全一样

9. 接下来,我们把字典格式结果保存,方便以后

import pickle #导入pickle

pickle_file = open("dicts.pkl", "wb") #创建一个pickle文件,但是打开方式必须是wb,二进制格式

pickle.dump(dicts,pickle_file ) #数据导入文件

pickle_file.close()

pickle_file = open("dicts.pkl", "rb")

mylist2=load(pickle.file)

pickle_file.close()

10. 看一下输出结果

python字典存储省份与城市_python实现城市和省份字典(根据城市判断属于哪个省份)...相关推荐

  1. python文件存储为json格式_python 储存文件json

    许多程序要求用户输入某些信息,例如存储游戏偏好或提供要可视化的数据.不管程序关注的是什么,程序都要将将用户提供的信息存储在列表.字典等数据结构中.当用户关闭程序时,几乎总是需要保存他们提供的信息:一个 ...

  2. python如何统计字典里面健的数量_Python中使用Counter进行字典创建以及key数量统计的方法...

    Python中使用Counter进行字典创建以及key数量统计的方法 来源:中文源码网    浏览: 次    日期:2018年9月2日 Python中使用Counter进行字典创建以及key数量统计 ...

  3. json和python中字典的区别和联系_Python中 json字符串和字典的区别

    一.前言 工作或学习中,相信很多同学跟我一样,对于json字符串和字典两者的概念一直摸棱两可.emmm,既然不懂,那我们查资料并整理下来. 二.json字符串和字典的区别 简单粗暴地说,字典是一种数据 ...

  4. python中两个字典如何合并为一个_python怎么合并两个字典

    Python中将两个字典进行合并操作,是一个比较常见的问题.本文将介绍几种实现两个字典合并的方案,并对其进行比较. 对于这个问题,比较直观的想法是将两个字典做相加操作,赋值给结果字典,其代码为: py ...

  5. python中字典是几维数据_Python 中的多维字典

    Python中的dict可以实现迅速查找.那么有没有像数组有二维数组一样,有二维的字典呢?比如我需要对两个关键词进行查找的时候.2D dict 可以通过 dict_2d = {'a': {'a': 1 ...

  6. python我想对你说_python学习第3天-----字典、解构

    1.字典 1)定义:查找速度快,效率高:用{}括起来,内部使用key:value的形式来保存数据:键值对是无序的,不是按照定义的方式保存数据的(类似于json文件), 例如: {'jay':'周杰伦' ...

  7. python 存储字典_python 字典存储

    Python学习笔记--元组.列表和字典的使用笔记 Python学习笔记--元组.列表和字典的使用笔记 最近开始学习python语言,所以在学习中做了一些记录,这次讲的是元组.列表和字典的基础操作和区 ...

  8. python创建学生类姓名学号_Python练习题:由用户输入学生学号与姓名,数据用字典存储,最终输出学生信息(按学号由小到大显示)。...

    # 1.由用户输入学生学号与姓名,数据用字典存储,最终输出学生信息(按学号由小到大显示) # 创建字典 students = {} # 用户输入 student = input("请输入学号 ...

  9. python输入学生姓名_Python练习题:由用户输入学生学号与姓名,数据用字典存储,最终输出学生信息(按学号由小到大显示)。...

    思路: 用户输入信息,储存在字典里 判断是否继续输入,继续填yes,输入其他则不继续 继续输入时判断学号是否重复(名字不判断,名字存在多人重名情况),存在则不储存,重新输入,并储存在字典里 对字典排序 ...

  10. python之if经典语句_Python之if语句、字典

    if语句 1>利用if语句判断用户是否被禁言 banned_users.py banned_users=['Lily','jonh','Susan'] user='Lily' if user n ...

最新文章

  1. 拒绝conda, 用virtualenv构建多版本的python开发环境
  2. CentOS 6.5下SSH总提示Warning: Permanently added '****' (RSA) to the list of known hosts.
  3. 教你如何创建类似QQ的android弹出菜单
  4. SQL语句:SQLwhile(0=0)与while @@fetch_status=0.
  5. Python中执行外部命令
  6. android studio占内存大小,极大精简android studio在C盘的内存
  7. length函数的头文件_Framebuffer 应用编程中涉及的 API 函数
  8. 前、后端分离权限控制设计与实现
  9. ubuntu1604安装网卡驱动 联想g510
  10. android 设置屏幕亮度,android 怎样设置屏幕亮度
  11. java 套接字关联的通道_java.nio.channels.SocketChannel
  12. html5 励志名言,励志名言五十条
  13. X280 工业4g路由器
  14. iDrac6 虚拟控制台 连接失败
  15. php红包退回通知,PHP红包算法
  16. 不正经技术研究,键盘侠,你武器可能有个坑!!
  17. PPT中正文和标题字体的选择技巧
  18. 前端开发知识点整理(1)—网络—秋招/春招/实习/工作
  19. matlab 前向欧拉法,前向后项差分和显式隐式欧拉法
  20. 6岁的招聘界“ChatGPT”|企业家俱乐部“创业者下午茶”第八期——AI得贤招聘官创始人方小雷

热门文章

  1. 掌上智维隐私政策privacy
  2. 防火墙添加ip白名单_宝塔防火墙IP白名单添加/导入云盾YUNDUN高防CDN节点IP段
  3. PMP备考错题集-作业习题二
  4. 花盆Flowerpot[USACO12MAR]
  5. Excel常用的操作
  6. 札记-20190531
  7. 2022商业版游戏陪玩陪聊系统最新源码+视频教程+全套素材
  8. 飞上“云端”的OA系统:什么是OA系统的云端化?
  9. 如何写作品的介绍文档
  10. ​浙江省交通运输物流信息服务中心平台容灾设备采购二期项目