Теперь, когда я знаю, как выполнять итерацию через dict, мне нужно знать, как перебирать список и иметь возможность печатать каждого клиента, аккаунт и транзакцию. У меня есть 3 класса Customer, Account и Transaction. В классе Customer я помещаю список для хранения объектов Account и в классе Account, у меня есть список для хранения объектов Transaction. В конце этого кода у меня есть цикл for, повторяющийся через карту, но когда я пытаюсь выполнить итерацию по списку, он, похоже, не работает. Скорее всего, это связано с моей собственной ошибкой.Итерация через dict, список в python
class Customer(object):
'''Main Constructor'''
def__init__(self,CNumber=1,CName="A",CAddress="A",CCity="A",CState="A",CZipCode=1,CPhone="1",Account=[]):
self.CNumber = CNumber
self.CName = CName
self.CAddress = CAddress
self.CCity = CCity
self.CState = CState
self.CZipCode = CZipCode
self.CPhone = CPhone
self.Account = Account
dict = {}
c = Customer.Customer("1111","Jake","Main St","Happy Valley","CA","96687","8976098765")
dict[c.getCNumber()] = c
c = Customer.Customer("2222","Paul","3342 CherrySt","Seatle","WA","98673","9646745678")
dict[c.getCNumber()] = c
a = Account.Account("1111",True,0.00,500.00)
dict[c.getCNumber()].AddAccount(a)
a = Account.Account("2222",True,0.00,500.00)
dict[c.getCNumber()].AddAccount(a)
a = Account.Account("3333",False,0.02,10000.00)
dict[c.getCNumber()].AddAccount(a)
a = Account.Account("4444",False,0.02,10000.00)
dict[c.getCNumber()].AddAccount(a)
for key in sorted(dict.keys()):
print("***Customer***")
print("Customer Number: " + dict[key].getCNumber())
print(dict[key].getCName())
print(dict[key].getCAddress())
print(dict[key].getCCity() + ", " + dict[key].getCState() + " " + dict[key].getCZipCode())
for key1 in dict[key].getAccount()[key1]:
print("\t***Account***")
print("\tAccount Number: " + a.getANumber())
print("\t" + a.getAType())
print("\t" + a.getAInterestRate())
Если вам нужна дополнительная информация, то дайте мне знать. Мне нужно, чтобы он печатал каждого клиента (который находится внутри dict) и каждой учетной записи, связанной с этим клиентом. В будущем мне понадобятся все транзакции, связанные с этой учетной записью. Я сделал это в Java (и это работает) следующим образом:
for (Customer c : customerMap.values()) {
// Print the customer name, address, etc.
System.out.println("\n**********Customer**********");
System.out.println("Customer Number: " + c.getCustomerNumber());
System.out.println(c.getCustomerName());
System.out.println(c.getCustomerAddress());
System.out.println(c.getCustomerCity() + ", "
+ c.getCustomerState() + " " + c.getCustomerZipCode());
System.out.println(c.getCustomerPhone());
for (Account a : c.getAllAccounts()) {
// Print the account balance, id, type
System.out.println("\t**********Account**********");
System.out.println("\tAccount Number: " + a.getAccountNumber());
if (a.getAccountType() == true) {
System.out.println("\tAccount Type: Checking");
} else {
System.out.println("\tAccount Type: Savings");
}
System.out.println("\tAccount Balance: " + a.getBalance());
System.out.println("\tInterest Rate: " + a.getInterestRate());
for (Transaction t : a.getAllTransactions()) {
// Go through the transactions of this account
System.out.println("\t\t**********Transactions**********");
System.out.println("\t\tTransaction Date: " + t.getDate());
System.out.println("\t\tTransaction Amount: "
+ t.getAmount());
if (t.getDebitOrCredit() == true) {
System.out.println("\t\tDebit or Credit: Credit");
} else {
System.out.println("\t\tDebit or Credit: Debit");
}
System.out.println("\t\tMemo: " + t.getMemo());
}// for
}// for
}// for
Ваша помощь очень ценится
я думаю, где я получаю зависший находится в этом коде: для key1 в dict [key] .getAccount() [key1]: Какой синтаксис нужно изменить? – user3106444
для key1 in dict [key] .getAccount(): – dano