将列表字典作为单行打印

时间:2016-05-24 17:32:00

标签: python string list dictionary

我有一份列表字典,如下所示。

>>> my_dict
{'a': [1, 2, 3], 'b': [4, 5, 6]}

我想像这样在一行中打印所有值。

a123b456

我能够做到这一点。

>>> print(''.join('{0}{1}'.format(x,y) for x,y in my_dict.iteritems()))
a[1, 2, 3]b[4, 5, 6]

和这个

>>> print(''.join('{0}{1}{2}'.format(x,y,z) for x,y in my_dict.iteritems() for z in y))
a[1, 2, 3]1a[1, 2, 3]2a[1, 2, 3]3b[4, 5, 6]4b[4, 5, 6]5b[4, 5, 6]6

这个

>>> print(''.join('{0}{1}'.format(x,y) for x,z in my_dict.iteritems() for y in z))
a1a2a3b4b5b6

但是有一个条件,我想用一行打印而不使用字符串或使用嵌套循环。我知道这一行本身就是一个嵌套循环。

2 个答案:

答案 0 :(得分:2)

print ''.join([''.join((k, ''.join([str(x) for x in v]))) for k,v in my_dict.iteritems()])

从字典中抓取每个(键,值)项目对。 首先,加入值列表的字符串表示(例如' 123')。 然后加入密钥(例如' a123')。 最后,外部连接连接字典的所有字符串。

答案 1 :(得分:1)

我想到了几种方法:

  1. 生成一个列表,其中包含字典的所有( key value )对的字符串表示形式:

      

    [' a123',' b456']

  2. 生成包含所有键和值列表的单个(平面)列表:

      

    [' a',' 1',' 2',' 3',' b',& #39; 4',' 5',' 6']

  3. 在这两种情况下,最终字符串都可以通过连接所有列表项来生成。

    以下是几种可能的实施方式:

      • print ''.join(''.join(map(str, [k]+v)) for k,v in d.iteritems())
      • print ''.join(str(k)+''.join(map(str, v)) for k,v in d.iteritems())
      • print ''.join('%s%s' % (k, ''.join(map(str, v))) for k,v in d.iteritems())
      • print ''.join(map(str, sum(([k]+v for k,v in d.iteritems()), [])))