0

我有两个清单。

一个列表仅包含代码,例如:

b3b
3cd
6f6
4d8
96b
00a
774
eb3
607
7e5

另一个列表包含带有名称的代码,例如

b3b:John
607:Eric
7e5:Jarrold

但这份名单还没有完成。

我想要什么作为输出,因为另一个不能被删除并且必须按照正确的顺序,例如

b3b:John
3cd
6f6
4d8
96b
00a
774
eb3
607:Eric
7e5:Jarrold

已经有了这段代码,但它只返回 True 或 False,但这不是我想要的。

list1 = [line.strip() for line in open('list1')]
list2 = [line.strip() for line in open('list2')]

comp = [i[:3] for i in list2]

for i in list1:
    print(i, i in list2)

也许有人可以帮助我吗?

4

1 回答 1

5

您应该使用字典将键映射到名称而不是列表作为第二个数据结构:

with open("list1") as f:
    keys = [line.strip() for line in f]
with open("list2") as f:
    names = dict(line.strip().split(":", 1) for line in f)

现在您可以有效地实现您的循环:

for k in keys:
    print(k, names.get(k, ""))

list2对 的每个条目执行线性搜索list1将是相当低效的。除了更好的性能外,字典还是数据含义的更好模型。

于 2012-09-08T22:23:24.903 回答