使用字典替换列表项



我目前正在尝试修复我最近一直在编写的这段代码。它应该需要一个列表和一个字典(下面),然后如果列表中的项目与字典中的项目匹配,它应该将其附加到列表中。我知道它正在尝试将列表中的项目与字典的错误部分匹配,但我不知道如何解决这个问题。任何帮助将不胜感激!

[1,2,3,4,5,6,7,8]   
{'a': 1,'b': 2,'c': 3}
text_print('nPlease input your file location: ')
    location = input()
    with open(location) as f:
        c = literal_eval(f.readline())
        d = literal_eval(f.readline())
    n_string = []
    text_print(str(c))
    text_print('n')
    text_print(str(d))
    for item in c:
        if item in d:
            n_string.append(str(item))
    text_print(str(n_string))

代码应输出 b c d 等

我不确定我是否理解这些文件的目的。你能提供更多关于这方面的信息吗?在您的示例中,"c"是列表还是字典?什么是"d"?

无论如何,在您的循环中,您只是将字典的键与列表中的项目进行比较,因此没有一个会匹配,因为列表中的项目是数字,字典的键是字母。您需要将字典的值与列表中的项目进行比较。我在下面举了一个例子。

yourlist = [1,3]   
yourdict = {'a': 1,'b': 2,'c': 3}
n_string = []
for key in yourdict:
    if yourdict[key] in yourlist:
        n_string.append(key)
print(n_string)

此示例分析字典并检查其值是否在列表中。如果值(数字)在列表中,则会将键(字母)添加到输出列表中。

遍历字典以查看列表中是否有任何值在字典中。如果存在,请将密钥追加到result列表中。

my_list = [1,2,3,4,5,6,7,8]
my_dict = {'a': 1,'b': 2,'c': 3,'d':3,'e':15}
result = []
for num in my_list:
   for key,value in my_dict.items():
      if num == value:
         result.append(key)
print result

输出:

["a"、"b"、"c"、"d"]

要减少比较次数,您可以获取列表和字典键的交集并对其进行迭代。

set(my_list).intersection(my_dict.values())

您应该在dict中切换键和值。假设您无法更改输入,则可以在加载字典后转换字典:

d2 = {val: key for key, val in d.items()}

然后,您可以直接查找项目。

for item in c:
    try:
        n_string.append(str(d2[item]))
    except KeyError:
        pass
text_print(str(n_string))

那是因为您正在与列表项if item in d进行比较时检查字典。获取字典值d.vales()并进行比较。在此操作中获取n_string值后,使用键运行 for 循环,值如下所示:

[1,2,3,4,5,6,7,8]   
{'a': 1,'b': 2,'c': 3}
text_print('nPlease input your file location: ')
    location = input()
    with open(location) as f:
        c = literal_eval(f.readline())
        d = literal_eval(f.readline())
    n_string = []
    nn_string = []
    text_print(str(c))
    text_print('n')
    text_print(str(d))
    for item in c:
        if item in d.values():
            n_string.append(str(item))
    text_print(str(n_string))
    for itemcur in n_string:
        for key, value in d.iteritems():
            if str(value) == str(itemcur):
                nn_string.append(str(key))
    print(str(nn_string))

请注意缩进错误(如果有)。提供必要空间!

相关内容

  • 没有找到相关文章

最新更新