我试图通过将列表项与字典键进行比较来创建一个新列表,如果找到匹配项,那么我将字典的值附加到全局初始化的新列表中。我正在尝试的代码如下
dict_1 = {'OMSS': '10.1.1.0/24', 'A&A': '10.1.2.0/24', 'AFM': '10.1.3.0/24', 'ATM': '10.1.4.0/24'}
list_1 = ['A&A', 'A&A', 'OMSS', 'OMSS', 'A&A', 'AFM', 'A&A', 'AFM', 'A&A']
list_2 = ['OMSS ', 'OMSS ', 'A&A ', 'A&A ', 'AFM ', 'A&A ', 'AFM ', 'A&A ', 'AFM ']
list_of_list1 = []
for s1 in list_1:
#print (s2)
for key, value in dict_1.items():
#print (key)
if s1 == key:
list_of_list1.append(value)
print (list_of_list1)
list_of_list2 = []
for s2 in list_2:
#print (s2)
for key, value in dict_1.items():
#print (key)
if s2 == key:
list_of_list2.append(value)
print (list_of_list2)
当我运行它时,我得到低于输出
['10.1.2.0/24', '10.1.2.0/24', '10.1.1.0/24', '10.1.1.0/24', '10.1.2.0/24', '10.1.3.0/24', '10.1.2.0/24', '10.1.3.0/24', '10.1.2.0/24']
{'OMSS': '10.1.1.0/24', 'A&A': '10.1.2.0/24', 'AFM': '10.1.3.0/24', 'ATM': '10.1.4.0/24'}
[]
我想弄清楚为什么“list_of_list2”显示为空?
答案 0 :(得分:1)
list_of_list1 = [dict_1[k] for k in list_1 if k in dict_1]
list_2
的所有项目都以 ' '
结尾。实际上,它们不会等于您在 dict_1
中拥有的键。尝试去除多余的空间:list_of_list2 = [dict_1[k.strip()] for k in list_2 if k.strip() in dict_1]
答案 1 :(得分:0)
您需要从要与字典键匹配的 list_2
项中删除前导和尾随空格。以下是您的问题的示例修复:
dict_1 = {'OMSS': '10.1.1.0/24', 'A&A': '10.1.2.0/24', 'AFM': '10.1.3.0/24', 'ATM': '10.1.4.0/24'}
list_1 = ['A&A', 'A&A', 'OMSS', 'OMSS', 'A&A', 'AFM', 'A&A', 'AFM', 'A&A']
list_2 = ['OMSS ', 'OMSS ', 'A&A ', 'A&A ', 'AFM ', 'A&A ', 'AFM ', 'A&A ', 'AFM ']
list_of_list1 = []
for s1 in list_1:
#print (s2)
for key, value in dict_1.items():
#print (key)
if s1 == key:
list_of_list1.append(value)
print (list_of_list1)
list_of_list2 = []
for s2 in list_2:
#print (s2)
for key, value in dict_1.items():
#print (key)
if s2.strip() == key:
list_of_list2.append(value)
print (list_of_list2)
输出:
['10.1.2.0/24', '10.1.2.0/24', '10.1.1.0/24', '10.1.1.0/24', '10.1.2.0/24', '10.1.3.0/24', '10.1.2.0/24', '10.1.3.0/24', '10.1.2.0/24']
['10.1.1.0/24', '10.1.1.0/24', '10.1.2.0/24', '10.1.2.0/24', '10.1.3.0/24', '10.1.2.0/24', '10.1.3.0/24', '10.1.2.0/24', '10.1.3.0/24']