如何调用和遍历字典的特定索引?

时间:2019-02-04 15:11:36

标签: python

我目前有一些代码,可以通过字典打印出用户名和密码。输出为username:abc password:12345。现在,我把它们都同时打印出来。我的主要目标是能够根据用户名发送电子邮件给这些用户,但是我当然只希望包括他们的用户名和密码信息。不是全部信息列表。因此,基本上,我希望仅告诉特定用户其密码。例如,我想向用户abc发送电子邮件,并且该电子邮件应仅包含其用户名和密码。然后,我想向用户xyz发送电子邮件,但该电子邮件只应包含用户xyz的密码。我有办法做到这一点吗?

我目前拥有字典印刷中的所有内容。因此,所有用户名和密码都已打印出来。我该如何遍历这些密码并将其密码发送给每个用户?

    lines = []
    User_Pass = {}
    #Open output file and show only lines that contain 'Success'
    with open("output.txt", "r") as f:
        for line in f.readlines():
            #Get rid of everything in line after 'Success'
            if 'Success' in line:
                lines.append(line[:line.find("Success")-1])

    for element in lines:
        parts = element.strip().split(":")
        User_Pass.update({parts[0] : parts[1]})

    for key, value in User_pass.items():
        print('Username: ' + key + ' Password: ' + value)

我希望能够通过电子邮件发送每个用户名并告诉他们其密码。我真的不确定如何去做。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

假设您已构建字典,只需向其询问与相关联的,即用户名:

user_pw = User_Pass.get(username)

如果用户名不在词典中,则返回None。

建议您研究Python词典中的一些示例。在循环代码中,您也有一些倒退。每当您想以正确的方式遍历字典时,都想使用(而不是项目)来遍历字典,因此请遍历示例中的所有内容:

for key in User_Pass.keys():
    print (key, User_Pass.get(key) )

答案 1 :(得分:0)

仅在遇到“用户名”或“密码”时填写User_Pass词典:

for element in lines:
    key, value = element.strip().split(":")
    if key in {"username", "password"}:
        User_Pass.update({key: value})

一个简单的演示

lines = [
    "fullname:John Doe",
    "username:jdoe",
    "password:S3cRet",
    "age:45",
]

User_Pass = {}
for element in lines:
    key, value = element.strip().split(":")
    if key in {"username", "password"}:
        User_Pass.update({key: value})

print(User_Pass)

您得到:

{'username': 'jdoe', 'password': 'S3cRet'}

请,您应遵循PEP8的命名约定:“ User_Pass” =>“ user_pass”。