用Python迭代字典

用Python迭代字典,python,dictionary,Python,Dictionary,当我尝试迭代这个字典时,它只打印出两次以2222为键的客户。我不知道为什么会这样。在过去,我尝试为客户c1和c2使用不同的变量,而不仅仅是c,但这挫败了使用for循环打印字典的目的 Dict = {} c = Customer.Customer("1111","Jake","Main St","Happy Valley","CA","96687","8976098765") Dict[c.getCNumber()] = c print(Dict[c.getCNumber()].getCNumbe

当我尝试迭代这个字典时,它只打印出两次以2222为键的客户。我不知道为什么会这样。在过去,我尝试为客户c1和c2使用不同的变量,而不仅仅是c,但这挫败了使用for循环打印字典的目的

Dict = {}
c = Customer.Customer("1111","Jake","Main St","Happy Valley","CA","96687","8976098765")
Dict[c.getCNumber()] = c
print(Dict[c.getCNumber()].getCNumber())
c = Customer.Customer("2222","Paul","3342 CherrySt","Seatle","WA","98673","9646745678")
Dict[c.getCNumber()] = c
print(Dict[c.getCNumber()].getCNumber())

for key in Dict.keys():
  print("***Customer***")
  print("Customer Number: " + c.getCNumber)
这张照片是:

***Customer***
Customer Number: 2222
***Customer***
Customer Number: 2222

我如何让它进行迭代,先让客户1111,然后让客户2222

这正是您告诉循环要做的:遍历一个键集,并为字典中的每个键打印一个c变量。这样更改循环:

for key in Dict.keys():
   print("***Customer***")
   print("Customer Number: " + Dict[key].getCNumber())
for key in sorted(dict.keys()):
我相信getCNumber是一个方法,而不是一个变量,所以您需要调用它-在方法名称后添加两个大括号,如我上面所示。 另外,通常更好的做法是坚持python命名约定,从小写字母开始命名变量——因此应该将Dict变量重命名为类似Dict的名称。 如果需要按排序顺序遍历字典中的键,可以这样编写for循环:

for key in Dict.keys():
   print("***Customer***")
   print("Customer Number: " + Dict[key].getCNumber())
for key in sorted(dict.keys()):

这正是您告诉循环要做的:遍历一个键集,并为字典中的每个键打印一个c变量。这样更改循环:

for key in Dict.keys():
   print("***Customer***")
   print("Customer Number: " + Dict[key].getCNumber())
for key in sorted(dict.keys()):
我相信getCNumber是一个方法,而不是一个变量,所以您需要调用它-在方法名称后添加两个大括号,如我上面所示。 另外,通常更好的做法是坚持python命名约定,从小写字母开始命名变量——因此应该将Dict变量重命名为类似Dict的名称。 如果需要按排序顺序遍历字典中的键,可以这样编写for循环:

for key in Dict.keys():
   print("***Customer***")
   print("Customer Number: " + Dict[key].getCNumber())
for key in sorted(dict.keys()):
你以前叫过你的口述。如果您发布的内容是您实际运行的内容,那么这是在一个完全不相关的dict上进行迭代

  print("Customer Number: " + c.getCNumber)
这里您指的是c,而不是与键相关的任何内容。c仍然是您创建的最后一个客户。如果Map包含两个键,这将打印c的信息两次。事实上,由于函数调用括号丢失,它可能会打印出一些内容

你以前叫过你的口述。如果您发布的内容是您实际运行的内容,那么这是在一个完全不相关的dict上进行迭代

  print("Customer Number: " + c.getCNumber)
这里您指的是c,而不是与键相关的任何内容。c仍然是您创建的最后一个客户。如果Map包含两个键,这将打印c的信息两次。事实上,由于函数调用括号丢失,它可能会打印一些内容。不需要按键

Python 2

Python 3

在dict上循环给出密钥

。不需要密钥

Python 2

Python 3


在dict上循环给出密钥

口述没有顺序。您必须首先将元素复制到列表中,对列表进行排序并输出结果。此外,在您的输出中没有1111。您的代码有点混乱;您可能需要验证它是否是您打算编写的内容。另外,show Customer.Customer.问题不是订单,而是通过dict进行迭代,并能够打印每个客户的信息dict未订购。您必须首先将元素复制到列表中,对列表进行排序并输出结果。此外,在您的输出中没有1111。您的代码有点混乱;您可能需要验证它是否是您打算编写的内容。另外,show Customer.Customer.问题不在于订单,而是通过dict进行迭代,并能够打印每个客户的信息。不会按照他要求的那样进行订购,他需要使用OrderedDict。这正是我写评论的原因,先是1111条,然后是2222条。但我在编辑时看到,您添加了排序的so+1:谢谢!我几天前才开始学习Python。这是我的第一篇文章。这帮了大忙!它不会像他要求的那样被订购,他需要使用OrderedDict这正是我写评论的原因,先是1111,然后是2222秒,但我看到在你的编辑中,你添加了排序的so+1:谢谢!我几天前才开始学习Python。这是我的第一篇文章。这帮了大忙!