首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Python列表值与字典键进行比较

将Python列表值与字典键进行比较
EN

Stack Overflow用户
提问于 2021-02-08 06:28:56
回答 2查看 84关注 0票数 0

我试图通过将列表项与字典键进行比较来创建新列表,如果找到匹配项,则将字典的值追加到已全局初始化的新列表中。我正在尝试的代码如下所示

代码语言:javascript
复制
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)

当我运行它时,输出低于

代码语言:javascript
复制
['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“会是空的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-08 06:53:47

您需要从要与字典键匹配的list_2项中移除前导和尾随空间。下面是您的问题的示例修复:

代码语言:javascript
复制
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)

输出:

代码语言:javascript
复制
['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']
票数 0
EN

Stack Overflow用户

发布于 2021-02-08 06:46:52

  1. 请停止以最低效的方式使用容器。只需使用列表comprehension:

代码语言:javascript
复制
list_of_list1 = [dict_1[k] for k in list_1 if k in dict_1]

  1. list_2的所有项目最后都有' '。实际上,它们并不等于您在dict_1中拥有的密钥。试着去掉多余的空间:

代码语言:javascript
复制
list_of_list2 = [dict_1[k.strip()] for k in list_2 if k.strip() in dict_1]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66096829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档