百科问答小站 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 装饰器? 
  Mathematica 比起 Python 如今还有什么优势? 
  python中用isdigit函数判断是否为数字,但当输入为负数是不行?怎么解决? 
  Jupyter Notebook 有哪些奇技淫巧? 
  Python3.10的新特性match关键字为什么不会和当前作用域的变量名称match冲突? 
  大家用Python-turtle库作图画出过哪些漂亮的树哇 ? 
  爬虫是不是用 Node.js 更好? 
  目前比较好用的python开发工具是哪一个? 
  为什么很多程序员不用 switch,而是大量的 if...else if ...? 

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





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