Java 在python中迭代dict、list

Java 在python中迭代dict、list,java,python,list,dictionary,Java,Python,List,Dictionary,现在我知道了如何遍历dict,我需要知道如何遍历列表并能够打印每个客户、帐户和事务。我有三个类:客户、账户和交易。在Customer类中,我放置了一个列表来保存Account对象,在Account类中,我有一个列表来保存事务对象。在这段代码的末尾,我有一个for循环遍历映射,但是当我尝试遍历列表时,它似乎不起作用。很可能是我自己的错误 class Customer(object): '''Main Constructor''' def__init__(self,CNumber=1,CName="

现在我知道了如何遍历dict,我需要知道如何遍历列表并能够打印每个客户、帐户和事务。我有三个类:客户、账户和交易。在Customer类中,我放置了一个列表来保存Account对象,在Account类中,我有一个列表来保存事务对象。在这段代码的末尾,我有一个for循环遍历映射,但是当我尝试遍历列表时,它似乎不起作用。很可能是我自己的错误

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

非常感谢您的帮助

查看以下代码行:

    for key1 in dict[key].getAccount()[key1]:

您不能使用对
key1

的引用来定义
key1
,请检查这行代码:

    for key1 in dict[key].getAccount()[key1]:

您不能使用对
key1
的引用来定义
key1

迭代
dict
的项:

>>> d = {"a": 1, "b": 2, "c": 3}
>>> for k, v in d.items():
...     print "{}={}".format(k, v)
... 
a=1
c=3
b=2
>>> for k in d.keys():
...     print k
... 
a
c
b
>>> for v in d.values():
...     print v
... 
1
3
2
>>> xs = [1, 2, 3]
>>> for x in xs:
...     print x
... 
1
2
3
>>> 

迭代一个
dict
的键:

>>> d = {"a": 1, "b": 2, "c": 3}
>>> for k, v in d.items():
...     print "{}={}".format(k, v)
... 
a=1
c=3
b=2
>>> for k in d.keys():
...     print k
... 
a
c
b
>>> for v in d.values():
...     print v
... 
1
3
2
>>> xs = [1, 2, 3]
>>> for x in xs:
...     print x
... 
1
2
3
>>> 

迭代一个
dict
的值:

>>> d = {"a": 1, "b": 2, "c": 3}
>>> for k, v in d.items():
...     print "{}={}".format(k, v)
... 
a=1
c=3
b=2
>>> for k in d.keys():
...     print k
... 
a
c
b
>>> for v in d.values():
...     print v
... 
1
3
2
>>> xs = [1, 2, 3]
>>> for x in xs:
...     print x
... 
1
2
3
>>> 

列表上迭代

>>> d = {"a": 1, "b": 2, "c": 3}
>>> for k, v in d.items():
...     print "{}={}".format(k, v)
... 
a=1
c=3
b=2
>>> for k in d.keys():
...     print k
... 
a
c
b
>>> for v in d.values():
...     print v
... 
1
3
2
>>> xs = [1, 2, 3]
>>> for x in xs:
...     print x
... 
1
2
3
>>> 
注意事项:

>>> d = {"a": 1, "b": 2, "c": 3}
>>> for k, v in d.items():
...     print "{}={}".format(k, v)
... 
a=1
c=3
b=2
>>> for k in d.keys():
...     print k
... 
a
c
b
>>> for v in d.values():
...     print v
... 
1
3
2
>>> xs = [1, 2, 3]
>>> for x in xs:
...     print x
... 
1
2
3
>>> 
  • 不要将变量命名为
    dict
    list
    ,因为它们会影响内置变量,可能会给您带来问题

迭代一个
dict
项:

>>> d = {"a": 1, "b": 2, "c": 3}
>>> for k, v in d.items():
...     print "{}={}".format(k, v)
... 
a=1
c=3
b=2
>>> for k in d.keys():
...     print k
... 
a
c
b
>>> for v in d.values():
...     print v
... 
1
3
2
>>> xs = [1, 2, 3]
>>> for x in xs:
...     print x
... 
1
2
3
>>> 

迭代一个
dict
的键:

>>> d = {"a": 1, "b": 2, "c": 3}
>>> for k, v in d.items():
...     print "{}={}".format(k, v)
... 
a=1
c=3
b=2
>>> for k in d.keys():
...     print k
... 
a
c
b
>>> for v in d.values():
...     print v
... 
1
3
2
>>> xs = [1, 2, 3]
>>> for x in xs:
...     print x
... 
1
2
3
>>> 

迭代一个
dict
的值:

>>> d = {"a": 1, "b": 2, "c": 3}
>>> for k, v in d.items():
...     print "{}={}".format(k, v)
... 
a=1
c=3
b=2
>>> for k in d.keys():
...     print k
... 
a
c
b
>>> for v in d.values():
...     print v
... 
1
3
2
>>> xs = [1, 2, 3]
>>> for x in xs:
...     print x
... 
1
2
3
>>> 

列表上迭代

>>> d = {"a": 1, "b": 2, "c": 3}
>>> for k, v in d.items():
...     print "{}={}".format(k, v)
... 
a=1
c=3
b=2
>>> for k in d.keys():
...     print k
... 
a
c
b
>>> for v in d.values():
...     print v
... 
1
3
2
>>> xs = [1, 2, 3]
>>> for x in xs:
...     print x
... 
1
2
3
>>> 
注意事项:

>>> d = {"a": 1, "b": 2, "c": 3}
>>> for k, v in d.items():
...     print "{}={}".format(k, v)
... 
a=1
c=3
b=2
>>> for k in d.keys():
...     print k
... 
a
c
b
>>> for v in d.values():
...     print v
... 
1
3
2
>>> xs = [1, 2, 3]
>>> for x in xs:
...     print x
... 
1
2
3
>>> 
  • 不要将变量命名为
    dict
    list
    ,因为它们会影响内置变量,可能会给您带来问题
要遍历列表,可以执行以下操作:

a = [1,2,3,4,5]

for item in a:
    print item

1
2
3
4
5
上面的“项目”一词是任意的,我几乎可以用任何东西:

for i in a:
    print i+1

2
3
4
5
6
但本质上是:

for element in listname:
    do something
还有其他方法,但这里有一些文档:

迭代一条指令

你可以做:

for key in d.keys(): # iterates through a list of the dict d's keys
    some code..

for value in d.values(): #iterates through a list of dict d's values
    some code..

for key, value in d.items(): #iterates through a list of key/value pairs from d
    code code...
要遍历列表,可以执行以下操作:

a = [1,2,3,4,5]

for item in a:
    print item

1
2
3
4
5
上面的“项目”一词是任意的,我几乎可以用任何东西:

for i in a:
    print i+1

2
3
4
5
6
但本质上是:

for element in listname:
    do something
还有其他方法,但这里有一些文档:

迭代一条指令

你可以做:

for key in d.keys(): # iterates through a list of the dict d's keys
    some code..

for value in d.values(): #iterates through a list of dict d's values
    some code..

for key, value in d.items(): #iterates through a list of key/value pairs from d
    code code...

如果
dict[key].getAccount()
返回一个列表,那么dict[key].getAccount()中key1的代码
将允许您使用引用
key1
迭代该列表中的每个帐户。在循环体中,将对
a.
的引用替换为
key1.
我仍然无法让编辑器工作。getAccount()返回我正在处理的列表。我认为错误在检索列表的语法中。如果
dict[key].getAccount()
返回一个列表,那么dict[key].getAccount()中key1的代码
将允许您使用引用
key1
迭代该列表中的每个帐户。在循环体中,将对
a.
的引用替换为
key1.
我仍然无法让编辑器工作。getAccount()返回我正在处理的列表。我认为错误在检索列表的语法中。我猜挂起的地方在以下代码中:对于dict[key]中的key1。getAccount()[key1]:需要更改什么语法?对于dict[key]中的key1。getAccount():我猜挂起的地方在以下代码中:对于dict[key]中的key1。getAccount()[key1]:需要更改什么语法?对于dict[key].getAccount()中的key1: