找回密码
 立即注册
相关推荐换一批
  1. SJ 51433.1-1994 CWC39型瓷介微调可变电容器详细规范
  2. SJ 20037.5-1997 LTB201013型可变电感器详细规范
  3. GB/T 23828-2009 高速公路LED可变信息标志
  4. GB 23826-2009 高速公路LED可变限速标志
  5. JT/T 431-2000 高速公路LED可变信息标志技术条件
  6. HY/T 119-2008 全G海岛名称与代码
  7. GB 11782-1989 水产及水产加工品分类与名称
  8. SJ 20030-1992 真空电容器总规范
  9. SJ 20037-1992 射频固定和可变电感器总规范
  10. GB 10182-1988 可变弹簧支吊架
  11. HG 3308-1986 农药通用名称命名原则和程序
  12. GB/T 4657-1995 中央党政机关、人民团体及其他机构名称代码
  13. SJ 2706-1986 CBM-223P型差容双联薄膜介质可变电容器
  14. SJ 2705-1986 CBM-203B、243B型双联薄膜介质可变电容器
  15. SJ 2704-1986 CBM-443BF(403BF)型调频调幅四联薄膜介质可变电容器
  16. SJ 2665-1986 薄膜介质调谐可变电容器总技术条件
  17. SJ/T 10648-1995 薄膜介质调谐可变电容器结构型式及尺寸
  18. SJ/T 10513-1994 CCW7型圆片形瓷介预调可变电容器详细规范
  19. SJ/T 10510-1994 电子设备用瓷介预调可变电容器总规范
  20. SJ/T 10509-1994 CYM2型薄膜介质预调可变电容器详细规范
  21. SJ/T 10508-1994 CYM1型薄膜介质预调可变电容器详细规范
  22. JB/T 9330-1999 光学仪器用可变光阑片基本参数
  23. GB/T 12775-1991 电子设备用圆片型瓷介预调可变电容器 总规范
  24. GB 3726-1995 甲胺磷乳油
names列表可变名称 | 软件设计/软件工程 2022-05-03 380 0star收藏 版权: . 保留作者信息 . 禁止商业使用 . 禁止修改作品
问题
我有这个清单

名称= [ [“猫”,9112,“dog123”,5625],[“幸运”,1232,“bad23”]]

根据这个问题

我用这段代码做到了
  1. names = [ ["cat", 9112, "dog123", 5625], ["luck", 1232, "bad23"] ]
  2. new = [[x for x in y if isinstance(x, int)] for y in names]
复制代码

输出 -: [[9112, 5625], [1232]]
  1. expected output -: [[912, 562], [123]]
  2. I was using this code but it wasn't workingm = sorted(list(set(new)))
  3. print(m)
  4. Error -:Traceback (most recent call last):   
  5.    File "main.py", line 13, in <module>     
  6.      m = sorted(list(set(new)))     
  7. TypeError: unhashable type: 'list'
  8. Note -: I want to keep only first original digits.(eg -: 1232 need to become 123 not 132)
复制代码

回答
列表是可变的;在 Python 中,可变容器不可散列。 set(names) 需要对名称中的元素进行散列以对它们进行排序,但是您的名称列表将列表作为元素( [“cat”、9112、“dog123”、5625] 和 [“luck”、1232、“” bad23"] ),因此它不能转换为集合。

试试这个:
  1. names = [ ["cat", 9112, "dog123", 5625], ["luck", 1232, "bad23"] ]

  2. li = [[x for x in y if isinstance(x, int)] for y in names]
  3. final = [["".join(sorted(set(str(x)), key=str(x).index)) for x in y] for y in li]
  4. print(li)
  5. print(final)

  6. 它提供以下输出:

  7. [[9112, 5625], [1232]]
  8. [['912', '562'], ['123']]
复制代码

编辑:

该解决方案将产生预期的结果。

它可能不是最好和最优化的解决方案,并且 OP 没有提到任何与性能相关的内容。





上一篇:如何使用 rspec 测试 ActionMailer 交付
下一篇:如何复制或连接两个字符*