部分价值和 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']
我有一个身份证号码的主列表和另一个部分身份证号码的列表。我需要检查部分 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']