2014-04-16 33 views
0

我試圖創建一個包含未指定用戶數的用戶名和密碼的列表。我試圖讓這個列表包含其中包含如下類型的「用戶」,的類對象:加入兩個對應的列表以創建類對象列表

import datetime 
import sys 


class User: 

    global_count = 0 

    def __init__(self, username, key): 
     self.username = username 
     self.key = key 
     User.global_count += 1 

    def showGlobalCount(self): 
     print "Number of Keys: %d" % global_count 

    def showKeys(self): 
     print "username: " + self.username 
     print "key: " + self.key + '\n' 

簡單地說,我想談談這個:

usernames = [John, Tim, Scott] 
passwords = [password, password1, password2] 

到這一點:

userInfo = [(John, password), (Tim, password1), (Scott, password2)] 

下面的代碼是我到目前爲止。這將創建一個包含用戶名的列表和一個包含密碼的列表。我想找到一種方法來將用戶名列表與相應的密碼相結合。

from Credentials import * 

def main(): 

    with open("Info.txt", "r") as infile: 
     data = [line.rstrip().split(",") for line in infile] 
     usernames, passwords = zip(*data) 

    usernameList = [] 
    passwordList = [] 

    for user in usernames: 
     usernameList.append(user) 

    for key in passwords: 
     passwordList.append(key) 

    print usernameList,passwordList 

if __name__ == "__main__": 
    main() 

任何人都可以提供幫助將非常感謝!

+0

你有一個文本文件,每行用逗號分隔用戶名和密碼。您將其提取到[用戶名,密碼]的2個元素列表中。你將它們一起壓縮成一個用戶名和一組密碼的元組。然後,通過創建空列表並迭代元組並添加到列表中,將這些元組更改爲列表。你想做什麼?你爲什麼不跳過所有的來回,只是'userList = [User(* line.rstrip()。split(','))for infile line]'? –

回答

3

您可以壓縮兩個列表,然後創建對象:

users = [User(user, password) for user, password in zip(usernameList, passwordList)] 

編輯

雖然你讀書時,它解壓縮數據,然後想再次拉上,我認爲這是一個浪費時間很少,因爲數據是你需要的清單清單

+0

那麼您將如何打印出用戶列表?一個簡單的'print users'語句返回如下內容:

+0

您可以爲該類定義__str__方法,或者不要爲用戶創建對象:users = [(user,password)密碼在zip(usernameList,passwordList)] – rlaverde

+0

@ dehone12:你已經有一個'showKeys'功能。只需將它稱爲...'用戶用戶:user.showKeys()'。 – ssm

相關問題