百科问答小站 logo
百科问答小站 font logo



python这个按分类转换列表如何写? 第1页

  

user avatar   liu-ji-27-94 网友的相关建议: 
      

这是个典型的倒排索引问题,相关概念可以参考 陈运文:搜索引擎之倒排索引解读

       d = {     "植物": ["榕树", "杨树", "橡树"],     "动物": ["兔子", "老虎", "大象"] }  pairs = sum([[[item, cate] for item in items] for cate, items in d.items()], []) # [ #     ['榕树', '植物'],  #     ['杨树', '植物'],  #     ['橡树', '植物'],  #     ['兔子', '动物'],  #     ['老虎', '动物'],  #     ['大象', '动物'] # ]  items = [pair[0] for pair in pairs] # ['榕树', '杨树', '橡树', '兔子', '老虎', '大象'] cates = [pair[1] for pair in pairs] # ['植物', '植物', '植物', '动物', '动物', '动物']  inverted_index = dict(pairs) # { #     '榕树': '植物', #     '杨树': '植物',  #     '橡树': '植物',  #     '兔子': '动物',  #     '老虎': '动物',  #     '大象': '动物' # }     

注:这里的代码主要用到了列表推导式,比如pairs那一行,用嵌套的列表推导式

       [[[item, cate] for item in items] for cate, items in d.items()] # [ #     [ #         ['榕树', '植物'],  #         ['杨树', '植物'],  #         ['橡树', '植物'] #     ], #     [ #         ['兔子', '动物'],  #         ['老虎', '动物'],  #         ['大象', '动物'] #     ] # ]     

然后使用sum(·, [])的方式将其展平。这两步等价于使用循环嵌套

       tmp = [] for cate, items in d.items():     for item in items:         tmp.append([item, cate])     

这里只是抛砖引玉,等价的代码太多了,可以选用自己喜欢的风格。




  

相关话题

  在大型项目上,Python 是个烂语言吗? 
  一个程序员多年累计编写一百万行代码是什么体验? 
  怎么自学python,大概要多久? 
  CPython有GIL是因为当年设计CPython的人偷懒吗? 
  在Linux中如果把Python卸载了系统还能正常运行吗? 
  你都用 Python 来做什么? 
  为什么 Node.js 这么火,而同样异步模式 Python 框架 Twisted 却十几年一直不温不火? 
  异常处理(exception handling)和错误处理(error handling)有什么区别? 
  为什么有人说 Python 的多线程是鸡肋呢? 
  各个编程语言都有哪些「亮点」? 

前一个讨论
如何评价部分学生认为上海交通大学 3 月 9 日封校信息不透明、无计划?是否属实?现在情况如何?
下一个讨论
Google 新推出的色彩空间 HCT 是什么?





© 2025-06-16 - tinynew.org. All Rights Reserved.
© 2025-06-16 - tinynew.org. 保留所有权利