gpt4 book ai didi

python while id 是相同的做某事

转载 作者:行者123 更新时间:2023-11-28 22:32:50 24 4
gpt4 key购买 nike

我觉得这是一些基本的东西,但不知何故我不明白。我想遍历一个列表并将所有人员附加到同一个 ID。或者写入文件,没关系。

[1, 'Smith']
[1, 'Black']
[1, 'Mueller']
[2, 'Green']
[2, 'Adams']

[1; 'Smith', 'Black', 'Mueller']
[2; 'Green', 'Adams']

首先,我创建了一个包含所有 ID 的列表,然后我有两个这样的 for 循环:

final_doc = []
for id in all_ids:
persons = []
for line in doc:
if line[0] == id:
persons.append(line[1])
final_doc.append(id, persons)

这需要很长时间。我试图创建一个带有 ids 的字典,然后以某种方式将它组合起来,但是字典只使用了一次相同的 id(可能是我在那里做了一些不应该做的事情)。现在我正在考虑使用 while 循环。虽然 id 仍然是相同的 append persons。但是如果必须这样做很容易理解,例如,当 id 小于 25 时。但是在“相同时”的情况下,我不确定该怎么做。非常感谢任何想法。

最佳答案

您可以将它们组合在字典中。

给定

lists = [[1, 'Smith'],
[1, 'Black'],
[1, 'Mueller'],
[2, 'Green'],
[2, 'Adams'] ]

d = {}
for person_id, name in lists:
d.setdefault(person_id, []).append(name)

d 现在包含

{1: ['Smith', 'Black', 'Mueller'], 2: ['Green', 'Adams']}

注意:

d.setdefault(person_id, []).append(name)

的捷径
if person_id not in d:
d[person_id] = []
d[person_id].append(name)

如果您希望您的答案是一个列表列表,其中 person_id 作为列表中的第一项(如您的问题中所暗示的那样),请将代码更改为

d = {}
for person_id, name in lists:
d.setdefault(person_id, [person_id]).append(name) # note [person_id] default
result = list(d.values()) # omit call to list if on Python 2.x

结果包含

[[1, 'Smith', 'Black', 'Mueller'], [2, 'Green', 'Adams']]

关于python while id 是相同的做某事,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40551268/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com