2014-11-02 70 views
0

我有一个数据结构,我需要输出到一个csv文件。字典中的键对应于第一列中的A1-A9,通过csv文件的第九列中的I1-I9。从字典输出一个csv结构

鉴于这种格式的数据:

{'I6': '3', 'H9': '7', 'I2': '7', 'E8': '3', 'H3': '9', 'H7': '4', 'I7': '5', 'I4': '9', 'H5': '2', 'F9': '8', 'G7': '3', 'G6': '1', 'G5': '7', 'E1': '5', 'G3': '6', 'G2': '2', 'G1': '4', 'I1': '8', 'C8': '9', 'I3': '1', 'E5': '6', 'I5': '4', 'C9': '2', 'G9': '9', 'G8': '8', 'A1': '1', 'A3': '5', 'A2': '3', 'A5': '9', 'A4': '2', 'A7': '8', 'A6': '7', 'C3': '4', 'C2': '6', 'C1': '7', 'E6': '4', 'C7': '1', 'C6': '5', 'C5': '8', 'C4': '3', 'I9': '6', 'D8': '4', 'I8': '2', 'E4': '8', 'D9': '5', 'H8': '1', 'F6': '2', 'A9': '4', 'G4': '5', 'A8': '6', 'E7': '2', 'E3': '7', 'F1': '6', 'F2': '4', 'F3': '3', 'F4': '1', 'F5': '5', 'E2': '9', 'F7': '9', 'F8': '7', 'D2': '1', 'H1': '3', 'H6': '8', 'H2': '5', 'H4': '6', 'D3': '8', 'B4': '4', 'B5': '1', 'B6': '6', 'B7': '7', 'E9': '1', 'B1': '9', 'B2': '8', 'B3': '2', 'D6': '9', 'D7': '6', 'D4': '7', 'D5': '3', 'B8': '5', 'B9': '3', 'D1': '2'} 

需要输出格式为:

A1, B1, C1, D1, E1, F1, G1, H1 
A2, B2, C2, D2, E2, F2, G2, H2 
A3, B3, C3, D3, E3, F3, G3, H3 
A4, B4, C4, D4, E4, F4, G4, H4 
A5, B5, C5, D5, E5, F5, G5, H5 
A6, B6, C6, D6, E6, F6, G6, H6 
A7, B7, C7, D7, E7, F7, G7, H7 
A8, B8, C8, D8, E8, F8, G8, H8 
A9, B9, C9, D9, E9, F9, G9, H9 

回答

1

按键就排序,并使用九从开始到结束一步写。

d = {'I6': '3', 'H9': '7', 'I2': '7', 'E8': '3', 'H3': '9', 'H7': '4', 'I7': '5', 'I4': '9', 'H5': '2', 'F9': '8', 'G7': '3', 'G6': '1', 'G5': '7', 'E1': '5', 'G3': '6', 'G2': '2', 'G1': '4', 'I1': '8', 'C8': '9', 'I3': '1', 'E5': '6', 'I5': '4', 'C9': '2', 'G9': '9', 'G8': '8', 'A1': '1', 'A3': '5', 'A2': '3', 'A5': '9', 'A4': '2', 'A7': '8', 'A6': '7', 'C3': '4', 'C2': '6', 'C1': '7', 'E6': '4', 'C7': '1', 'C6': '5', 'C5': '8', 'C4': '3', 'I9': '6', 'D8': '4', 'I8': '2', 'E4': '8', 'D9': '5', 'H8': '1', 'F6': '2', 'A9': '4', 'G4': '5', 'A8': '6', 'E7': '2', 'E3': '7', 'F1': '6', 'F2': '4', 'F3': '3', 'F4': '1', 'F5': '5', 'E2': '9', 'F7': '9', 'F8': '7', 'D2': '1', 'H1': '3', 'H6': '8', 'H2': '5', 'H4': '6', 'D3': '8', 'B4': '4', 'B5': '1', 'B6': '6', 'B7': '7', 'E9': '1', 'B1': '9', 'B2': '8', 'B3': '2', 'D6': '9', 'D7': '6', 'D4': '7', 'D5': '3', 'B8': '5', 'B9': '3', 'D1': '2'} 

import csv 
with open("my.csv","w") as f: 
    srt = sorted(d) 
    wr = csv.writer(f) 
    for i in range(9): 
     wr.writerow([d[key] for key in srt[i::9]]) 

输出:

1,9,7,2,5,6,4,3,8 
3,8,6,1,9,4,2,5,7 
5,2,4,8,7,3,6,9,1 
2,4,3,7,8,1,5,6,9 
9,1,8,3,6,5,7,2,4 
7,6,5,9,4,2,1,8,3 
8,7,1,6,2,9,3,4,5 
6,5,9,4,3,7,8,1,2 
4,3,2,5,1,8,9,7,6 
+0

感谢您的回答,您的答案字面意思A1..I9输出,但我想我不清楚它需要输出这些单元格的值。 – jrzelling 2014-11-02 22:36:17

+0

你只需要使用键来做到这一点,我已经对它们进行了排序,并告诉你如何访问,我编辑了答案。 – 2014-11-02 22:36:58

1

您可以用lambda函数排序使用排序:

d={'I6': '3', 'H9': '7', 'I2': '7', 'E8': '3', 'H3': '9', 'H7': '4', 'I7': '5', 'I4': '9', 'H5': '2', 'F9': '8', 'G7': '3', 'G6': '1', 'G5': '7', 'E1': '5', 'G3': '6', 'G2': '2', 'G1': '4', 'I1': '8', 'C8': '9', 'I3': '1', 'E5': '6', 'I5': '4', 'C9': '2', 'G9': '9', 'G8': '8', 'A1': '1', 'A3': '5', 'A2': '3', 'A5': '9', 'A4': '2', 'A7': '8', 'A6': '7', 'C3': '4', 'C2': '6', 'C1': '7', 'E6': '4', 'C7': '1', 'C6': '5', 'C5': '8', 'C4': '3', 'I9': '6', 'D8': '4', 'I8': '2', 'E4': '8', 'D9': '5', 'H8': '1', 'F6': '2', 'A9': '4', 'G4': '5', 'A8': '6', 'E7': '2', 'E3': '7', 'F1': '6', 'F2': '4', 'F3': '3', 'F4': '1', 'F5': '5', 'E2': '9', 'F7': '9', 'F8': '7', 'D2': '1', 'H1': '3', 'H6': '8', 'H2': '5', 'H4': '6', 'D3': '8', 'B4': '4', 'B5': '1', 'B6': '6', 'B7': '7', 'E9': '1', 'B1': '9', 'B2': '8', 'B3': '2', 'D6': '9', 'D7': '6', 'D4': '7', 'D5': '3', 'B8': '5', 'B9': '3', 'D1': '2'} 

sorted_d = sorted(d.items(), key=lambda x: (x[0][1],x[0])) 

for x in sorted_d: #keys 
    if x[0][0]=="A": 
     print "\n"+x[0]+",", 
    elif x[0][0]=="I": 
     print x[0], 
    else: 
     print x[0]+",", 

for x in sorted_d: #values 
    if x[0][0]=="A": 
     print "\n"+x[1]+",", 
    elif x[0][0]=="I": 
     print x[1], 
    else: 
     print x[1]+",", 

打印出键:

A1, B1, C1, D1, E1, F1, G1, H1, I1 
A2, B2, C2, D2, E2, F2, G2, H2, I2 
A3, B3, C3, D3, E3, F3, G3, H3, I3 
A4, B4, C4, D4, E4, F4, G4, H4, I4 
A5, B5, C5, D5, E5, F5, G5, H5, I5 
A6, B6, C6, D6, E6, F6, G6, H6, I6 
A7, B7, C7, D7, E7, F7, G7, H7, I7 
A8, B8, C8, D8, E8, F8, G8, H8, I8 
A9, B9, C9, D9, E9, F9, G9, H9, I9 

和相应的值:

1, 9, 7, 2, 5, 6, 4, 3, 8 
3, 8, 6, 1, 9, 4, 2, 5, 7 
5, 2, 4, 8, 7, 3, 6, 9, 1 
2, 4, 3, 7, 8, 1, 5, 6, 9 
9, 1, 8, 3, 6, 5, 7, 2, 4 
7, 6, 5, 9, 4, 2, 1, 8, 3 
8, 7, 1, 6, 2, 9, 3, 4, 5 
6, 5, 9, 4, 3, 7, 8, 1, 2 
4, 3, 2, 5, 1, 8, 9, 7, 6