Python:对特定ord中的元组列表进行排序

2024-05-20 11:12:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的元组列表,这些元组可以以多种方式排序。例如,它可以如下所示:

data = [ ("name", "Derek Carr"),
         ("college", "Fresno State"),
         ("jersey", 4),
         ("team", "Oakland Raiders") ]

或者像这样:

data = [ ("college", "Fresno State"),
         ("jersey", 4),
         ("name", "Derek Carr"),
         ("team", "Oakland Raiders") ]

每次的内容都一样,但元组的顺序不同。如何创建一个每次都完全像这样的新列表:

condensed_data = ["Derek Carr", "Oakland_Raiders"]

编辑:(1)数据列表固定。(2) 这些列表顺序不同的原因是它们是由字典构造的


Tags: name列表data顺序derek方式team元组
3条回答

下面是一个关于如何在python中排序的好入门:https://wiki.python.org/moin/HowTo/Sorting。你知道吗

但是您拥有的condensed_data并没有所有的条目?如果您希望只获取压缩数据,则可能需要尝试列表理解,例如:

condensed_data = sorted([item[1] for item in data if item[1] in ('Derek Carr', 'Oakland Raiders')])

我想你的意思是你的数据是这样的:

people = [
          [("name", "Derek Carr"),
           ("college", "Fresno State"),
           ("jersey", 4),
           ("team", "Oakland Raiders")],
          [("college", "Fresno State"),
           ("jersey", 4),
           ("name", "Derek Carr"),
           ("team", "Oakland Raiders")]
         ]

也就是说,您有一个列表列表,每个列表都包含有效的元组(您的示例不是有效的Python)。你知道吗

首先,我们要将每个元组列表转换为一个字典,将键映射到值:

data = map(dict, people)

现在,我们可以提取每个人想要的信息:

for p in data:
    p_data = [p["name"], p["team"]]


如果您只想为一个人执行此操作:
data = [("name", "Derek Carr"),
        ("college", "Fresno State"),
        ("jersey", 4),
        ("team", "Oakland Raiders")]
person_data = dict(data)
result = [person_data["name"], person_data["team"]]

假设您有一个元组列表:

[v for key in ["name", "team"] for k, v in data if k == key]
# ['Derek Carr', 'Oakland Raiders']

或者可以使用普通循环:

lst = []
for key in ['name', 'team']:
    for k, v in data:
        if k == key:
            lst.append(v)

lst
# ['Derek Carr', 'Oakland Raiders']

相关问题 更多 >