尝试字典中的键直到一个工作 - python 2.7

时间:2017-07-30 08:59:24

标签: python python-2.7 dictionary exception

我的字典包含键(可能重复也可能不重复)和值(它们都是唯一的)。当我的键值对不起作用时,我收到异常错误。当我收到异常时,我想转到下一个匹配的密钥,并尝试它的值。如果它们都不起作用,最后到达#34;异常处理程序,只需继续下一个键。

下面是一种逻辑布局,除了我当前的逻辑只会尝试另一个关键的可能性,当我想在到达"最终"之前耗尽所有关键选项。

for currentFile, originalFile in filepath_dictionary.items():
try:
    relocateSource(currentFile, originalFile)
except:
    # (Some logic which tries the next key, value pair in which the key matches the current key
finally:
    print 'Could not relocate file: ' + currentFile

3 个答案:

答案 0 :(得分:0)

在Python字典中,所有键都是唯一的。

答案 1 :(得分:0)

也许你应该在列表中保留重复键的值,只需在异常提升时搜索该列表。

dct = {key1: [val2_k1, val2_k1], key2: [val2_k2]}

答案 2 :(得分:0)

如果你认为你的密钥重复,但你的价值观不重要,那么你的数据结构就错了,因为字典密钥是唯一的。

有两种可能的解决方案:

  • 反转您的字典结构,以便唯一的文件名是键,重复的文件名是值。
  • 使字典的每个值都成为文件名列表,以便将几个唯一的文件名与重复的文件名相关联。换句话说,您通过将重复文件名与几个唯一的文件名相关联而不是仅仅一个来表示重复文件名的重复。

采用第二种选择可以得到这样的结果:

for current_file, original_files in filepath_dictionary.items():
    for original_file in original_files:
        try:
            relocate_source(current_file, original_file)                
            break
        except:
            pass
    else:
        print 'Could not relocate file: ', current_file