【问题标题】:How to call and iterate through specific indexes of a dictionary?如何调用和遍历字典的特定索引?
【发布时间】:2019-02-04 23:29:20
【问题描述】:

我目前有通过字典打印出用户名和密码的代码。输出为用户名:abc 密码: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)

我希望能够通过电子邮件发送每个用户名并告诉他们他们的密码。我真的不知道该怎么做。任何帮助将不胜感激!

【问题讨论】:

    标签: python


    【解决方案1】:

    假设您已经构建了字典,您只需向它询问与 key 关联的 value,即用户名:

    user_pw = User_Pass.get(username)
    

    如果用户名不在字典中,这将返回 None。

    建议您研究 Python 词典以获取一些示例。在你的循环代码中,你也有一点倒退。任何时候你想遍历一个字典(正确的方式)你想用 keys 来做,而不是项目,所以在你的例子中循环遍历所有内容:

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

    【讨论】:

    • for key in User_Pass: 就足够了。
    【解决方案2】:

    只有遇到“用户名”或“密码”时才填写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"。

    【讨论】:

      猜你喜欢
      • 2010-09-27
      • 1970-01-01
      • 2021-01-10
      • 2021-12-14
      • 2016-01-16
      • 2017-01-18
      • 2015-11-14
      相关资源
      最近更新 更多