繁体   English   中英

如果键已经在字典中,则返回值

[英]return value if key already in dictionary

我目前正在为 Compsci 课程做最后的作业。 基本思想是创建一个简单的加密程序。 它使用包含映射到不同字母的字母表行的文件输入(即 z 到 a、y 到 b、w 到 c 等)并创建两个字典(编码和解码)以供稍后使用并返回 0。 function还需要测试可能出现的不同问题并返回不同的值。 我坚持的部分是如果键或值已经添加到字典中,分别返回 3 或 4。

encoding = {}
decoding = {}
def createDictionaries(filepath):
    global encoding
    global decoding
    try:
        with open(filepath) as f:
            for line in f:
                try:
                    (key, val) = line.split()
                except ValueError:
                    return 2
                encoding[(key)] = val
                decoding[(val)] = key
            return 0

    except FileNotFoundError:
        return 1


print(createDictionaries("dict1.txt"))

我一直在尝试使用 for 循环和异常捕获,但似乎无法破解它

非常感谢任何帮助。

要检查一个键或一个值是否在字典中,您可以使用if key in dic.keys(): if value in dic.values():

您可以在将键和值添加到字典之前添加 if 语句:

encoding = {}
decoding = {}
def createDictionaries(filepath):
    global encoding, decoding

    try:
        with open(filepath,'r') as f:
            for line in f.readlines():
                try:
                    (key, val) = line.split()
                except ValueError:
                    return 2
                if key in encoding.keys(): # If this condition is met, return 3
                    return 3
                if val in encoding.values(): # If this condition is met, return 4
                    return 4
                encoding[key] = val
                decoding[val] = key
            return 0

    except FileNotFoundError:
        return 1

print(createDictionaries("dict1.txt"))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM