给出dicts列表,一次打印键的有效方法,然后是所有值

时间:2013-11-01 03:20:07

标签: python list dictionary key

所以我有一个dicts列表。我想打印出第一个dict的键(在每个dict中保证相同),然后是所有值(不是)。逻辑:

key1,key2,key3,...
dicts[0][key1],dicts[0][key2],dicts[0][key3],...
dicts[1][key1],dicts[1][key2],dicts[1][key3],...
...

输出:

last_modified,asset_id,asset_type,asset_name,status,annotation,error_id
2013-10-31 10:30:56,745844,VECTOR,Diameters,PROCESS_STOPPED,SYSTEM_ERROR,1376
2013-10-31 04:53:17,750686,VECTOR,bogus_data_1,PROCESS_STOPPED,SYSTEM_ERROR,1382
...

现在我这样做:

errors = GetErrorList()
print 'last_modified,asset_id,asset_type,asset_name,status,annotation,error_id'
for error in errors:
  print '%s,%s,%s,%s,%s,%s,%s' % (
    error['last_modified'], error['asset_id'], error['asset_type'],
    error['asset_name'], error['status'], error['annotation'], error['error_id']
  )

对密钥进行两次硬编码似乎效率低且容易出现破损,但输出顺序是固定的,所以我不能只转出errors[0].keys()。是否有更好/更pythonic的方式来做到这一点?

1 个答案:

答案 0 :(得分:1)

keys = ('last_modified', 'asset_id', 'asset_type', 'asset_name', 'status', 'annotation', 'error_id')
print ','.join(keys)
for error in GetErrorList():
    print ','.join(str(error[key]) for key in keys)

这会在您想要的输出之间输入逗号。你的程序打印空格。

如果您想要空格,请将第二个','更改为' '