2016-07-08 10 views
1

によって辞書は、私は、この形式で辞書を持っている:印刷行

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 
+1

http://stackoverflow.com/questions/ 15785719/how-to-print-a-dictionary-by-line-in-python –

答えて

3

あなたは.values()zipことができますが、順序は、あなたがない限り保証されませんcollections.OrderedDict(またはfairly recent version of PyPy)を使用しています:

for row in zip(*d.values()): 
    print(row) 

など。私はこれを実行すると、私は

('a', 1) 
('b', 2) 
('c', 3) 

を取得するが、私は同じように簡単に得ている可能性があり:

​​3210

(ハッシュのランダム化が有効になっている場合、私は将来の実行でそれを取得する可能性があります)。


あなたが指定した順序をしたいとあなたはアップフロント知っているキーの有限集合を持っている場合、あなたは直接それらの項目をちょうどジップことができます。

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

これはd = {'type 1':[1,2,3]、タイプ4 ':[4,5,6]、 'タイプ3 ':[' d '、' e '、' f '] } 辞書の要素が増えるとどうなりますか? – arsho

+0

@arsho - はい、任意の数の要素に対して機能します。 – mgilson

+0

d = {'type 1':[1,2,3]、 'type 2':['a'、 'b'、 'c']、 'type 4':[4,5,6]、 '5'、 'e'、 'b'、2) ( '、' d '、' a '、1) 6、 'f'、 'c'、3)。だから、辞書の入力として注文していない。 – arsho

1

あなたの行がキーでアルファベット順たい場合次の点を考慮する必要があります。

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

データセットが巨大な場合は、itertools.izipまたはpandasを考慮してください。

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 
1

も、あなたは、あなたが辞書のエントリとして結果を命じ得ることはありませんOrderedDictに辞書を渡します。ですからタプルのタプルは良いオプションになります。

コードと次の出力項目:

コード(パイソン3):

import collections 
t = (('type 1',[1,2,3]), 
    ('type 2',['a','b','c']), 
    ('type 4',[4,5,6]),  
    ('type 3',['d','e','f'])) 
d = collections.OrderedDict(t) 
d_items = list(d.items()) 
values_list = [] 
for i in range(len(d_items)): 
    values_list.append(d_items[i][1]) 
values_list_length = len(values_list) 
single_list_length = len(values_list[0]) 
for i in range(0,single_list_length): 
    for j in range(0,values_list_length): 
     print(values_list[j][i],' ',end='') 
    print('') 

出力:

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