Python:使用for循环打印出水平字典的内容

时间:2017-06-27 16:03:03

标签: python dictionary printing

我想在水平和每三个键上打印字典的键以创建一个新行。我这样写的是:

SELECT 
(row_number() over (order by 'Fruit')) AS 'Id' ,
'Fruit'
FROM 
(
SELECT 'Fruit'
 FROM myTable  GROUP BY 'Fruit'
 )  t

然而,输出只是水平的,每三个数字之间有两个换行符。

我想要的输出是:

  

123

     

456

     

789

4 个答案:

答案 0 :(得分:0)

这是你想要的吗?

fields= {1 : "not", 2 : "not", 3 : "not",
         4 : "not", 5 : "not", 6 : "not",
         7 : "not", 8 : "not", 9 : "not"}
for Key,values in fields.items():
    print(Key, end = "")#python3 , if in python2 use print item, instead.
    if Key%3==0:
        print ("\n")


123

456

789

答案 1 :(得分:0)

如果您使用python 3,或导入python 2的打印功能,您可以指定print的结束参数,如下所示:print(i, end=""),字典键之间不会有换行符。 但由于字典键没有排序,它们将以“随机”顺序打印,以避免这种情况,制作一个键列表,并在打印前对其进行排序,如下所示:keys = sorted(dict.keys())

答案 2 :(得分:0)

print (i),将为您解决问题。另外,您的代码缩进不正确。

fields= {1 : "not", 2 : "not", 3 : "not",
         4 : "not", 5 : "not", 6 : "not",
         7 : "not", 8 : "not", 9 : "not"} 
for i in fields:
  print (i),
  if i%3==0:
    print ("\n")`

答案 3 :(得分:0)

虽然解决方案适用于特定情况,但我想向您解释一下。 python中的dictionary没有订购。在这种情况下它很好,因为你用简单的1,2,3...键声明它的方式。你可以思考那是怎么运作的。

>>> a = {1 : "not", 2 : "not", 3 : "not",4 : "not", 5 : "not", 6 : "not",7 : "not", 8 : "not", 9 : "not"}
>>> a
{1: 'not', 2: 'not', 3: 'not', 4: 'not', 5: 'not', 6: 'not', 7: 'not', 8: 'not', 9: 'not'}

很好,所以在这种情况下,所有解决方案都可行。但是,如果您认为相同并尝试使用以下dict

的相同代码
>>> a= {12 : "not", 21 : "not", 30 : "not",4 : "not", 15 : "not", 61 : "not",71 : "not", 8 : "not", 19 : "not"}

输出将以相同的顺序

>>> a
{19: 'not', 4: 'not', 21: 'not', 71: 'not', 8: 'not', 12: 'not', 61: 'not', 30: 'not', 15: 'not'}

如果您尝试使用for keys in a:进行迭代和打印,则会遇到很多问题。

所以你想要所需的输出(dict没有排序那么不可预测)使用OrderedDict

from collections import OrderedDict
fields = [(1, 'not'), (2, 'not'), (3, 'not'),
          (4, 'not'), (5, 'not'), (6, 'not'),
          (7, 'not'), (8, 'not'), (9, 'not')]
a = OrderedDict(fields)
for i,key in enumerate(a):
    print(key,end='')
    i+=1
    if i%3==0:
        print()

输出:

123
456
789

还应使用enumerate()来打印每三个值。不要依赖钥匙。如果你改变了怎么办?

i,枚举(字典)的键只是给出了0,key11,key22,key3,...等值。只需提供一对数字,即所有项目。

尝试更改密钥并使用此代码和其他代码,您将注意到此更改的结果与此解决方案相同。而不是其他人。 请记住总是您的代码应该具有适应性。不应该完全依赖于特定的输入集

123
456
789

如果您希望将它们分隔为换行符,那么注意只会print()。如果你想在它们之间留一个间隙(换行符),请使用`print(" \ n")。

123

456

789