无法编写条件以更新python

问题描述

请帮助!如何在现有代码中编写条件,将进行如下检查。请看注释块。我无法在字典/列表中附加值。我需要写/更改什么?

  1. 用户返回主菜单并再次使用相同的密钥文件运行加密过程,但将加密的文件保存为其他名称用户可以使用同一密钥创建尽可能多的加密文件

我的尝试:

import Encrypt
from collections import defaultdict

key_value_dict = {}

def encrypt_file():
    try:

        txtfile = input("Your plain txt file that you want to encrypt : ")
        encrypt_file = input("Directory to save the encrypted file : ")
        key = input("Key for encryption : ")

        # process for encryption
        Encrypt.encrypt_file(txtfile,encrypt_file,key)

        # ----------------------------------------------------------------
        key_value_dict = defaultdict(list,{key: encrypt_file})

        print(key_value_dict)

        key_value_dict [key].append(encrypt_file)
        print(key_value_dict )
        # --------------------------------------------------------------------
    except FileNotFoundError:
        print("File Not Found!")


def menu():
    selection = True
    while selection:
        print("""
MAIN MENU:
[1] Encrypt files using existing keys.
[2] Exit.
        """)
        try:  
            selection = input("Please select : ")

            if selection == "1":
                encrypt_file()  # call function
            elif selection == "2":
                print("\n[4] Keys are used for encryption:","\n",key_value_dict)
                selection = None
            else:
                print("\n Invalid selection! Try again")
        except ValueError:  
            print("\n Exception: Invalid user input!")

# Main function
if __name__ == '__main__':
    menu()  

解决方法

如果我理解正确,我认为您不需要defaultdict

尝试一下:

# define this first outside the function like you have
encrypt_key_value_dict = {}

# Within your code block,get rid of the assignment to default dict
if encrypt_key_value_dict[key]:
    encrypt_key_value_dict.append(encrypt_file)
else:
    encrypt_key_value_dict[key] = [encrypt_file]

我无法从您的代码中看到您的密钥在哪里被传递等等,但是我确定您可以弄清楚。