python将具有相同键的多个dict转换为一行CSV

时间:2017-12-02 20:48:25

标签: python

尝试在python中使用相同的键从多个dict创建单行输出。

[{u'Value': u'nine', u'Key': u'nine'}, 
 {u'Value': u'six', u'Key': u'six'}, 
 {u'Value': u'four', u'Key': u'four'}, 
 {u'Value': u'one', u'Key': u'one'}, 
 {u'Value': u'seven', u'Key': u'seven'}, 
 {u'Value': u'ten', u'Key': u'ten'}, 
 {u'Value': u'two', u'Key': u'two'},
 {u'Value': u'three', u'Key': u'three'}, 
 {u'Value': u'five', u'Key': u'five'}, 
 {u'Value': u'eight', u'Key': u'eight'}]

输出我正在寻找:

  
      
  1. 九九六六四有四一......八八或

  2.   
  3. 九:九六:六......八:八

  4.   

我尝试了各种选项single expression

4 个答案:

答案 0 :(得分:2)

您可以使用列表理解和两次.join调用轻松完成此操作。

data = [
    {u'Value': u'nine', u'Key': u'nine'}, {u'Value': u'six', u'Key': u'six'}, 
    {u'Value': u'four', u'Key': u'four'}, {u'Value': u'one', u'Key': u'one'}, 
    {u'Value': u'seven', u'Key': u'seven'}, {u'Value': u'ten', u'Key': u'ten'}, 
    {u'Value': u'two', u'Key': u'two'}, {u'Value': u'three', u'Key': u'three'}, 
    {u'Value': u'five', u'Key': u'five'}, {u'Value': u'eight', u'Key': u'eight'}
]

row = ' '.join([':'.join([d[u'Key'], d[u'Value']]) for d in data])
print(row)

<强>输出

nine:nine six:six four:four one:one seven:seven ten:ten two:two three:three five:five eight:eight

如果您实际上不想要冒号,可以使用该技术的变体:

row = ' '.join([s for d in data for s in ([d[u'Key'], d[u'Value']])])
print(row)

<强>输出

nine nine six six four four one one seven seven ten ten two two three three five five eight eight

这可能会稍快一些,因为它只需要一次.join次呼叫。

答案 1 :(得分:0)

如果您尝试将词典列表压缩为单个词典:

from collections import defaultdict
d = defaultdict(list)
s = [{u'Value': u'nine', u'Key': u'nine'}, {u'Value': u'six', u'Key': u'six'}, {u'Value': u'four', u'Key': u'four'}, {u'Value': u'one', u'Key': u'one'}, {u'Value': u'seven', u'Key': u'seven'}, {u'Value': u'ten', u'Key': u'ten'}, {u'Value': u'two', u'Key': u'two'}, {u'Value': u'three', u'Key': u'three'}, {u'Value': u'five', u'Key': u'five'}, {u'Value': u'eight', u'Key': u'eight'}]
for i in s:
   d['Value'].append(i['Value'])
   d['Key'].append(i['Key'])

print(dict(d))

输出:

{'Key': [u'nine', u'six', u'four', u'one', u'seven', u'ten', u'two', u'three', u'five', u'eight'], 'Value': [u'nine', u'six', u'four', u'one', u'seven', u'ten', u'two', u'three', u'five', u'eight']}

答案 2 :(得分:0)

如果您在python 2中工作,答案很简单:

用逗号结束打印语句。 在程序结束时,添加一个空的print语句。这将确保打印单行。

答案 3 :(得分:0)

这是另一种选择:

$args = array(
    'post__in' => $menus,
    'orderby' => 'ID',
    'order'   => 'DESC',

);
$query = new WP_Query( $args );