将列表或字典打印到列中

时间:2015-11-05 21:47:32

标签: python list dictionary

我一直在研究如何将数据打印到列中。我无法通过字典(键)或列表(将字典中的键从列表中取出)找到一种优雅的方法。

我已经研究了迭代每个键并打印出来,但是这并不起作用,因为你无法使用映射。我尝试过使用列表并使用string formatting打印列表中的每个项目,但是您可以想象我从每个列表项中找回每个字符的空格,我似乎无法理解使用.join。我能够得到的最接近的是Aaron Digulla here的答案。但是,这不会按字母顺序打印列表项。我不相信有一种简单优雅的方法可以做到这一点吗?

上面讨论的答案方法

l = ['exiv2-devel', 'mingw-libs', 'tcltk-demos', 'fcgi', 'netcdf', 
    'pdcurses-devel',     'msvcrt', 'gdal-grass', 'iconv', 'qgis-devel', 
    'qgis1.1', 'php_mapscript']

if len(l) % 2 != 0:
    l.append(" ")

split = len(l)/2
l1 = l[0:split]
l2 = l[split:]
for key, value in zip(l1,l2):
    print "{0:<20s} {1}".format(key, value)

2 个答案:

答案 0 :(得分:2)

您可以使用sort,尝试:

l = ['exiv2-devel', 'mingw-libs', 'tcltk-demos', 'fcgi', 'netcdf', 
    'pdcurses-devel',     'msvcrt', 'gdal-grass', 'iconv', 'qgis-devel', 
    'qgis1.1', 'php_mapscript']

l.sort()# Alphabetizes l

if len(l) % 2 != 0:
    l.append(" ")

split = len(l)/2
l1 = l[0:split]
l2 = l[split:]
for key, value in zip(l1,l2):
    print "{0:<20s} {1}".format(key, value)

答案 1 :(得分:0)

这是一个更通用的版本,可让您指定列数:

def print_in_columns(iterable, cols=2, col_width=20, key=None, reverse=False):
    # get items in output order
    items = sorted(iterable, key=key, reverse=reverse)
    # calculate number of output rows, and pad as needed
    rows = (len(items) + cols - 1) // cols
    pad  = rows * cols - len(items)
    items.extend("" for _ in range(pad))
    # prepare output template
    item_fmt = "{{:{}s}}".format(col_width)
    row_fmt  = " ".join(item_fmt for _ in range(cols))
    # print by row
    for r in range(rows):
        print(row_fmt.format(*(items[r::rows])))

使用像

files = [
    'exiv2-devel', 'mingw-libs', 'tcltk-demos', 'fcgi', 'netcdf', 
    'pdcurses-devel',     'msvcrt', 'gdal-grass', 'iconv', 'qgis-devel', 
    'qgis1.1', 'php_mapscript'
]

print_in_columns(files, cols=4, col_width=16)

产生

exiv2-devel      iconv            netcdf           qgis-devel
fcgi             mingw-libs       pdcurses-devel   qgis1.1
gdal-grass       msvcrt           php_mapscript    tcltk-demos