检索字典中的键值

时间:2019-04-04 00:48:37

标签: python

我有两个循环,一个循环用于检索密钥(电子邮件地址)并将其存储到变量中,另一个循环用于检索密钥的值(包含数据的列表)。但是,脚本运行后,将重复最后的键。

我尝试移动for循环,并尝试创建一个新的代码块,该代码块将键放入列表中,并且仅一个一个地检索它们,但这没有用。

代码

Code Image

import re 
import os

userInfoDict = dict() 
newDict = eval(open("/home/ad.ilstu.edu/keschm1/IT170/UserLog//myData.txt").read())
list = []
#print(newDict)
email = ' '
firstName = ' ' 
lastName = ' ' 
IP = ' '

for keys in newDict.keys():
   email = keys

for values in newDict.values():
   firstName = values[0]
   lastName = values[1]
   IP = values[2]
   #print('The name is: ' + firstName + ' ' +lastName +' the IP is: '  + IP +'\n')
   list.append(email + ": " + firstName + " " + lastName +":" + IP)

file = open("userInfo.txt", "w")
for items in list:
   file.write(items + '\n')
   #print(items)
file.close()

这是打印到txt文档上的结果

  

hosack@comcast.com .:格伦·威尔逊(Glen Wilson):172.39.112.76   hosack@comcast.com。:Cindy Tady:123.18.19.20 hosack@comcast.com。:Emma   林:11.11.11.11 hosack@comcast.com .:安娜·史密斯:172.28.19.15   hosack@comcast.com。:Jack Hosack:196.88.45.23

1 个答案:

答案 0 :(得分:0)

for keys in newDict.keys():
    email = keys

您认为这是做什么的?这会将newDict中的每个键一个接一个地分配给相同的 email 变量。因此,电子邮件最终将设置为您从 newDict 词典处理的最后一个值。可能不是您想要的。

由于这是设置电子邮件的唯一方法,因此以后在代码中使用时,它将始终设置为相同的值。

您可能想要的是这样的东西:

for email, values in newDict.items():
   firstName = values[0]
   lastName = values[1]
   IP = values[2]
   #print('The name is: ' + firstName + ' ' +lastName +' the IP is: '  + IP +'\n')
   list.append(email + ": " + firstName + " " + lastName +":" + IP)