百科问答小站 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])     

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




  

相关话题

  27岁想转python,是否值得? 
  GitHub 上有哪些,简单、易学的 Python 项目? 
  Python中for i in somelist,如果在for循环内改变somelist会发生什么? 
  Python真的不适合游戏开发吗?游戏全都用像Python这种解释型语言写,对开发出的游戏有什么影响? 
  Mathematica 比起 Python 如今还有什么优势? 
  有哪些 Python 大牛的 blog 推荐? 
  MATLAB在逐渐被Python淘汰吗? 
  有没有简单一点的 Python 小例子或小项目? 
  python中的模块、库、包有什么区别? 
  如何学习Python,以及新手如何入门? 

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





© 2025-05-18 - tinynew.org. All Rights Reserved.
© 2025-05-18 - tinynew.org. 保留所有权利