简体   繁体   中英

How to call and iterate through specific indexes of a dictionary?

I currently have code that prints out a username and their password by means of dictionary. The output is username:abc password:12345. Right now I have them all just printing out at the same time. My main goal is to be able to email these users based on their usernames, but of course I only want to include their username and password information. Not the whole list of information. So basically I want to be able to tell the specific user only their password. For example, I would want to send an email to user abc and that email should only contain their username and password. Then I would like to send an email to user xyz but that should only contain the password of user xyz. Is there a way I can make this happen?

I currently have everything from the dictionary printing. So all the usernames and passwords are being printed out. How can I iterate through these and send an email to each user with their password?

    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)

I want to be able to email each username and tell them their password. I am really not sure how to go about this. Any help would be appreciated!

Assuming you have the dictionary constructed, you just ask it for the value associated with the key , which is the username:

user_pw = User_Pass.get(username)

this will return None if the username is not in the dictionary.

Suggest you research Python dictionaries for some examples. In your loop code, you have it a little backwards as well. Anytime you want to iterate through a dictionary (the right way) you want to do it with the keys , not the items, so to loop through all in your example:

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

Only fill your User_Pass dictionary when you meet "username" or "password":

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

A simple demonstration:

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)

You get:

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

Please, you should follow the naming conventions of the PEP8 : "User_Pass" => "user_pass".

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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