Python 按行打印词典

Python 按行打印词典,python,dictionary,Python,Dictionary,我有一本这种格式的词典: d = {'type 1':[1,2,3],'type 2':['a','b','c']} 这是一个对称字典,从某种意义上说,对于每个键,我总是拥有相同数量的元素 有一种方法可以像行一样循环: for row in d.rows(): print row 所以我得到了输出: [1]: 1, a [2]: 2, b [3]: 3, b 您可以压缩.values,但除非您使用的是collections.OrderedDict或: e、 g.当我运行这个时,我得

我有一本这种格式的词典:

d = {'type 1':[1,2,3],'type 2':['a','b','c']}
这是一个对称字典,从某种意义上说,对于每个键,我总是拥有相同数量的元素

有一种方法可以像行一样循环:

for row in d.rows():
    print row
所以我得到了输出:

[1]: 1, a
[2]: 2, b
[3]: 3, b
您可以压缩.values,但除非您使用的是collections.OrderedDict或:

e、 g.当我运行这个时,我得到

('a', 1)
('b', 2)
('c', 3)
但我也可以很容易地得到:

(1, 'a')
(2, 'b')
(3, 'c')
如果启用哈希随机化,我可能会在以后的运行中得到它

如果您想要指定的顺序,并且有一组预先知道的有限的密钥,您可以直接压缩这些项:

zip(d['type 1'], d['type 2'])
您可以压缩.values,但除非您使用的是collections.OrderedDict或:

e、 g.当我运行这个时,我得到

('a', 1)
('b', 2)
('c', 3)
但我也可以很容易地得到:

(1, 'a')
(2, 'b')
(3, 'c')
如果启用哈希随机化,我可能会在以后的运行中得到它

如果您想要指定的顺序,并且有一组预先知道的有限的密钥,您可以直接压缩这些项:

zip(d['type 1'], d['type 2'])

如果希望按键按字母顺序排列行,可以考虑:

zip(*(v for k, v in sorted(d.iteritems())))
# [(1, 'a', 'd', 4), (2, 'b', 'e', 5), (3, 'c', 'f', 6)]

如果你的数据集很大,那么考虑ItRealToS.IZIP或熊猫。

import pandas as pd
df = pd.DataFrame(d)
print df.to_string(index=False)

# type 1 type 2 type 3  type 4
#      1      a      d       4
#      2      b      e       5
#      3      c      f       6

print df.to_csv(index=False, header=False)

# 1,a,d,4
# 2,b,e,5
# 3,c,f,6

如果希望按键按字母顺序排列行,可以考虑:

zip(*(v for k, v in sorted(d.iteritems())))
# [(1, 'a', 'd', 4), (2, 'b', 'e', 5), (3, 'c', 'f', 6)]

如果你的数据集很大,那么考虑ItRealToS.IZIP或熊猫。

import pandas as pd
df = pd.DataFrame(d)
print df.to_string(index=False)

# type 1 type 2 type 3  type 4
#      1      a      d       4
#      2      b      e       5
#      3      c      f       6

print df.to_csv(index=False, header=False)

# 1,a,d,4
# 2,b,e,5
# 3,c,f,6

即使您将词典传递给OrderedDict,也不会得到作为词典条目的已排序结果。所以在这里,元组的元组可以是一个很好的选择

请参阅下面的代码和输出:

代码Python 3:

输出:


即使您将词典传递给OrderedDict,也不会得到作为词典条目的已排序结果。所以在这里,元组的元组可以是一个很好的选择

请参阅下面的代码和输出:

代码Python 3:

输出:


这对d={'type1':[1,2,3],'type2':['a','b','c'],'type4':[4,5,6],'type3':['d','e','f']}有效吗?如果字典有更多的元素,会发生什么?@arsho-是的,它对任意数量的元素有效。当d={'type1':[1,2,3],'type2':['a','b','c'],'type4':[4,5,6],'d','e','它会生成4,'d','a',15,'e','b',26,'f','c',3。所以它不是作为字典输入排序的。@arsho-对,这就是为什么我的回答说,除非。。。。事实上,如果不使用collections.OrderedDict,就无法保证您根据字典输入的顺序对列进行排序。这对d={'Type1':[1,2,3],'Type2':['a','b','c'],'Type4':[4,5,6],'Type3':['d','e','f']}有效吗?如果字典有更多的元素,会发生什么情况?@arsho Yes,当d={'type1':[1,2,3],'type2':['a','b','c'],'type4':[4,5,6],'type3':['d','e','f']}时,它会生成4,'d','a',15','e','b',26','f','c',3。所以它不是作为字典输入排序的。@arsho-对,这就是为什么我的回答说,除非。。。。事实上,如果不使用collections.OrderedDict,就无法保证根据字典输入的顺序对列进行排序。