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

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




  

相关话题

  Jupyter Notebook 有哪些奇技淫巧? 
  Python中for i in somelist,如果在for循环内改变somelist会发生什么? 
  怎么理解元编程? 
  如何看待 PyPy 与 Pyston 的未来? 
  如何让停留在语法层面的 C++,变成实际工程中的 C++? 
  仅就作图而言,Python 和 MATLAB 有可比性吗? 
  C、C++、Java、JavaScript、PHP、Python、Ruby 这些语言分别主要用来开发什么? 
  用Python写过哪些「脑洞大开」的小工具? 
  如何看待“Python星人”这个群体? 
  你们都用Python实现了哪些办公自动化? 

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





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