部分价值和 return 全部价值的核对清单

Check list for part of value and return whole value

我有一个身份证号码的主列表和另一个部分身份证号码的列表。我需要检查部分 ID 号是否在主列表中。如果是这样,我需要将整个身份证号码 return 放入一个新列表中。我有:

master_list = ['20000-K-A', '20000-K-B', '20000-K-C', '30000-R-X', '30000-R-V', '30000-R-F']

partial_list = [20000, 40000, 500000]

new_list =[]

for x in partial_list:
  if x in master_list:
    new_list.append(x)

print(new_list)

现在这仅在部分 ID 号与主列表中的完全一致时才有效。如何 return 主列表中的值,以便我可以将其添加到新列表中?

一个选项是首先从 master_list 创建一个查找字典(注意 master_list 是一个字符串列表,而 partial_list 是一个整数列表,所以我们需要将前缀转换为 int):

d = {}
for item in master_list:
    k, _ = item.split('-', maxsplit=1)
    d.setdefault(int(k), []).append(item)

看起来像:

{20000: ['20000-K-A', '20000-K-B', '20000-K-C'], 
 30000: ['30000-R-X', '30000-R-V', '30000-R-F']}

然后遍历 partial_list 以获得部分匹配的 ID:

new_list =[]
for x in partial_list:
    new_list.extend(d.get(x, []))

输出:

['20000-K-A', '20000-K-B', '20000-K-C']