【发布时间】:2014-04-07 09:50:07
【问题描述】:
这段代码给出了我想要的输出。我想知道是否有更有效的方法来获得相同的输出。看来我在这条路上走的是风景优美的路线。对于这个例子,我打印出结果,我的真实数据被写入一个文本文件。
# using a dict with a sub-dict as its values, sort, format, and print out as delimited output suitable to import into Excel
tmpList = []
dict_1 = {'key_b1': {'val3': 'val_b3', 'val1': 'val_b1', 'val2': 'val_b2'}, 'key_a1': {'val3': 'val_a3', 'val1': 'val_a1', 'val2': 'val_a2'}, 'key_e1': {'val3': 'val_e3', 'val1': 'val_e1', 'val2': 'val_e2'}, 'key_d1': {'val3': 'val_d3', 'val1': 'val_d1', 'val2': 'val_d2'}, 'key_c1': {'val3': 'val_c3', 'val1': 'val_c1', 'val2': 'val_c2'}}
"""
# same dictionary as above but formatted for readability
dict_1 =
{
'key_b1': {'val3': 'val_b3', 'val1': 'val_b1', 'val2': 'val_b2'},
'key_a1': {'val3': 'val_a3', 'val1': 'val_a1', 'val2': 'val_a2'},
'key_e1': {'val3': 'val_e3', 'val1': 'val_e1', 'val2': 'val_e2'},
'key_d1': {'val3': 'val_d3', 'val1': 'val_d1', 'val2': 'val_d2'},
'key_c1': {'val3': 'val_c3', 'val1': 'val_c1', 'val2': 'val_c2'}
}
"""
# turn dictionary into a list with sublists
for k, v in dict_1.iteritems():
tmpList.append([k, [v.values()[0], v.values()[1], v.values()[2]]])
print tmpList, '\n\n'
"""
# result of turning dict_1 into a list with sublists, only printed for those that might need some insight
[
['key_e1', ['val_e3', 'val_e2', 'val_e1']],
['key_b1', ['val_b3', 'val_b2', 'val_b1']],
['key_d1', ['val_d3', 'val_d2', 'val_d1']],
['key_a1', ['val_a3', 'val_a2', 'val_a1']],
['key_c1', ['val_c3', 'val_c2', 'val_c1']]
]
"""
# sort each sublist by members, and then sort by outer members
sort_sublists = [[k, sorted(l)] for k, l in tmpList]
sort_outer_lists = sorted(sort_sublists)
# print out in a comma delimited format
for d in sort_outer_lists:
print d[0] + ',' + d[1][0] + ',' + d[1][1] + ',' + d[1][2]
"""
# final desired results
key_a1,val_a1,val_a2,val_a3
key_b1,val_b1,val_b2,val_b3
key_c1,val_c1,val_c2,val_c3
key_d1,val_d1,val_d2,val_d3
key_e1,val_e1,val_e2,val_e3
"""
【问题讨论】:
标签: sorting python-2.7 dictionary key-value