1

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

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']
  )

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

4

1 回答 1

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)

这会在值之间打印逗号,例如您想要的输出。您的程序打印空格。

如果您希望有空格,请将第二个更改','' '.

于 2013-11-01T03:22:46.450 回答