首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对序列中列表中的元组进行排序

对序列中列表中的元组进行排序
EN

Stack Overflow用户
提问于 2022-08-25 15:59:29
回答 1查看 89关注 0票数 1

我有几个元组的大列表。其中之一是:

代码语言:javascript
复制
list_one[:20]
>>>

[[('Bacterium', 'Biologically Active Substance'),
  ('Biologically Active Substance', 'Pharmacologic Substance'),
  ('Pharmacologic Substance', 'Immunologic Factor')],
 [('Bacterium', 'Biologically Active Substance'),
  ('Biologically Active Substance', 'Pharmacologic Substance'),
  ('Pharmacologic Substance', 'Organic Chemical')],
 [('Bacterium', 'Biologically Active Substance'),
  ('Biologically Active Substance', 'Pathologic Function'),
  ('Pathologic Function', 'Finding')],
 [('Pharmacologic Substance', 'Immunologic Factor'),
  ('Biologically Active Substance', 'Pharmacologic Substance'),
  ('Chemical', 'Biologically Active Substance')],
 [('Pharmacologic Substance', 'Organic Chemical'),
  ('Biologically Active Substance', 'Pharmacologic Substance'),
  ('Chemical', 'Biologically Active Substance')],
 [('Biologically Active Substance', 'Pathologic Function'),
  ('Pathologic Function', 'Finding'),
  ('Chemical', 'Biologically Active Substance')],
 [('Pharmacologic Substance', 'Immunologic Factor'),
  ('Biologically Active Substance', 'Pharmacologic Substance'),
  ('Gene or Genome', 'Biologically Active Substance')],
 [('Pharmacologic Substance', 'Organic Chemical'),
  ('Biologically Active Substance', 'Pharmacologic Substance'),
  ('Gene or Genome', 'Biologically Active Substance')],
 [('Biologically Active Substance', 'Pathologic Function'),
  ('Pathologic Function', 'Finding'),
  ('Gene or Genome', 'Biologically Active Substance')],
 [('Disease or Syndrome', 'Sign or Symptom'),
  ('Manufactured Object', 'Disease or Syndrome'),
  ('Molecular Biology Research Technique', 'Manufactured Object')],
 [('Disease or Syndrome', 'Patient or Disabled Group'),
  ('Manufactured Object', 'Disease or Syndrome'),
  ('Molecular Biology Research Technique', 'Manufactured Object')],
 [('Disease or Syndrome', 'Age Group'),
  ('Manufactured Object', 'Disease or Syndrome'),
  ('Molecular Biology Research Technique', 'Manufactured Object')],
 [('Disease or Syndrome', 'Finding'),
  ('Manufactured Object', 'Disease or Syndrome'),
  ('Molecular Biology Research Technique', 'Manufactured Object')],
 [('Disease or Syndrome', 'Population Group'),
  ('Manufactured Object', 'Disease or Syndrome'),
  ('Molecular Biology Research Technique', 'Manufactured Object')],
 [('Disease or Syndrome', 'Animal'),
  ('Manufactured Object', 'Disease or Syndrome'),
  ('Molecular Biology Research Technique', 'Manufactured Object')],
 [('Body Part, Organ, or Organ Component', 'Pathologic Function'),
  ('Pathologic Function', 'Finding'),
  ('Nucleic Acid, Nucleoside, or Nucleotide',
   'Body Part, Organ, or Organ Component')],
 [('Pharmacologic Substance', 'Biologically Active Substance'),
  ('Biologically Active Substance', 'Pathologic Function')],
 [('Pharmacologic Substance', 'Immunologic Factor'),
  ('Biologically Active Substance', 'Pharmacologic Substance'),
  ('Tissue', 'Biologically Active Substance')],
 [('Pharmacologic Substance', 'Organic Chemical'),
  ('Biologically Active Substance', 'Pharmacologic Substance'),
  ('Tissue', 'Biologically Active Substance')],
 [('Biologically Active Substance', 'Pathologic Function'),
  ('Pathologic Function', 'Finding'),
  ('Tissue', 'Biologically Active Substance')]]

如何对每个子列表进行排序,使元组按顺序排列(例如,[(1,2), (2,3), (3,4)])?

例如,第一个子列表

代码语言:javascript
复制
[('Bacterium', 'Biologically Active Substance'),
  ('Biologically Active Substance', 'Pharmacologic Substance'),
  ('Pharmacologic Substance', 'Immunologic Factor')]

有按顺序排列的元组。然而,最后一个问题是:

代码语言:javascript
复制
[('Biologically Active Substance', 'Pathologic Function'),
  ('Pathologic Function', 'Finding'),
  ('Tissue', 'Biologically Active Substance')]

不是,而且应该是:

代码语言:javascript
复制
[('Tissue', 'Biologically Active Substance'),
('Biologically Active Substance', 'Pathologic Function'),
  ('Pathologic Function', 'Finding')
  ]

注意,子列表的长度在列表之间是不同的(也就是说,我在这个列表中有3个元组,但是我可能有2、5或任何其他数字)。此外,元组可以更改为列表,如果更容易。

EN

回答 1

Stack Overflow用户

发布于 2022-08-26 08:54:31

有趣的问题。您可以尝试以下几种方法:

代码语言:javascript
复制
def sort(tuples):
    connects = dict(tuples)
    steps = []
    start = (connects.keys() - connects.values()).pop()
    while end := connects.get(start, False):
        steps.append((start, end))
        start = end
    return steps

list_one_sorted = [sort(tuples) for tuples in list_one]

  • 将元组(list_one的子列表)读入字典,这为您提供了一种自然的方式来遍历元组(从键开始,获取相应的值,然后使用值作为键,.)。
  • 标识起始点start:值中没有的唯一键。
  • 现在遍历元组,从start开始,并在新列表中收集由此排序的元组。H 210F 211

list_one的结果是:

代码语言:javascript
复制
[[('Bacterium', 'Biologically Active Substance'),
  ('Biologically Active Substance', 'Pharmacologic Substance'),
  ('Pharmacologic Substance', 'Immunologic Factor')],
 [('Bacterium', 'Biologically Active Substance'),
  ('Biologically Active Substance', 'Pharmacologic Substance'),
  ('Pharmacologic Substance', 'Organic Chemical')],
 [('Bacterium', 'Biologically Active Substance'),
  ('Biologically Active Substance', 'Pathologic Function'),
  ('Pathologic Function', 'Finding')],
 [('Chemical', 'Biologically Active Substance'),
  ('Biologically Active Substance', 'Pharmacologic Substance'),
  ('Pharmacologic Substance', 'Immunologic Factor')],
 [('Chemical', 'Biologically Active Substance'),
  ('Biologically Active Substance', 'Pharmacologic Substance'),
  ('Pharmacologic Substance', 'Organic Chemical')],
 [('Chemical', 'Biologically Active Substance'),
  ('Biologically Active Substance', 'Pathologic Function'),
  ('Pathologic Function', 'Finding')],
 [('Gene or Genome', 'Biologically Active Substance'),
  ('Biologically Active Substance', 'Pharmacologic Substance'),
  ('Pharmacologic Substance', 'Immunologic Factor')],
 [('Gene or Genome', 'Biologically Active Substance'),
  ('Biologically Active Substance', 'Pharmacologic Substance'),
  ('Pharmacologic Substance', 'Organic Chemical')],
 [('Gene or Genome', 'Biologically Active Substance'),
  ('Biologically Active Substance', 'Pathologic Function'),
  ('Pathologic Function', 'Finding')],
 [('Molecular Biology Research Technique', 'Manufactured Object'),
  ('Manufactured Object', 'Disease or Syndrome'),
  ('Disease or Syndrome', 'Sign or Symptom')],
 [('Molecular Biology Research Technique', 'Manufactured Object'),
  ('Manufactured Object', 'Disease or Syndrome'),
  ('Disease or Syndrome', 'Patient or Disabled Group')],
 [('Molecular Biology Research Technique', 'Manufactured Object'),
  ('Manufactured Object', 'Disease or Syndrome'),
  ('Disease or Syndrome', 'Age Group')],
 [('Molecular Biology Research Technique', 'Manufactured Object'),
  ('Manufactured Object', 'Disease or Syndrome'),
  ('Disease or Syndrome', 'Finding')],
 [('Molecular Biology Research Technique', 'Manufactured Object'),
  ('Manufactured Object', 'Disease or Syndrome'),
  ('Disease or Syndrome', 'Population Group')],
 [('Molecular Biology Research Technique', 'Manufactured Object'),
  ('Manufactured Object', 'Disease or Syndrome'),
  ('Disease or Syndrome', 'Animal')],
 [('Nucleic Acid, Nucleoside, or Nucleotide',
   'Body Part, Organ, or Organ Component'),
  ('Body Part, Organ, or Organ Component', 'Pathologic Function'),
  ('Pathologic Function', 'Finding')],
 [('Pharmacologic Substance', 'Biologically Active Substance'),
  ('Biologically Active Substance', 'Pathologic Function')],
 [('Tissue', 'Biologically Active Substance'),
  ('Biologically Active Substance', 'Pharmacologic Substance'),
  ('Pharmacologic Substance', 'Immunologic Factor')],
 [('Tissue', 'Biologically Active Substance'),
  ('Biologically Active Substance', 'Pharmacologic Substance'),
  ('Pharmacologic Substance', 'Organic Chemical')],
 [('Tissue', 'Biologically Active Substance'),
  ('Biologically Active Substance', 'Pathologic Function'),
  ('Pathologic Function', 'Finding')]]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73490578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档