百科问答小站 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如何实现list元素的两两相加并返回最大值? 
  哪里能找到数字版的PDF资料书呢(非扫描版,类似word转的那样,可以复制鼠标选中的内容)? 
  怎么理解元编程? 
  计算机大一新生,压力大,天天都在学习,我该怎么办? 
  学会Python后好就业吗? 
  学习python为什么要在linux下?怎么学? 
  我今年大一,女,学经管的,寒假该如何规划? 
  PHP、Java、Python、C、C++ 这几种编程语言都各有什么特点或优点? 
  如何入门 Python 爬虫? 
  为什么有些编程语言的数组要从零开始算? 

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





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