繁体   English   中英

在两列中打印排序列表(来自字典)

[英]Print a sorted list (from a dictionary) in two columns

我有一本字典key1=v1l1, key2=val2, key3=val3, key4=val4 该字典排序为sortedlist = sorted(dict_m.items(), key=lambda x: x[1])

现在我可以使用打印它

for i in sortlist:
    print ('{:11s}'.format(i[0]) ,  ":", i[1])

我的 output 是;

key1=v1l1
key2=val2 
key3=val3
key4=val4

我必须做些什么才能在两列中获得 output

key1=v1l1  key2=val2 
key3=val3  key4=val4

你可以做如下的事情。

for x,y in zip(sortedlist[0::2], sortedlist[1::2]):
    print("{0} {1}".format(x, y))

试试这个:

for i in [sortedlist[i:i+2] for i in range(0,len(sortedlist), 2)]:
    print(f"{i[0][0]}={i[0][1]}\t{i[1][0]}={i[1][1]}")
dict_m = {
       'key1': 'v1l1',
       'key2': 'val2',
       'key3': 'val3',
       'key4': 'val4', 
       'key10': 'v1l10',
       'key20': 'val20',
       'key30': 'val30',
       'key40': 'val40',
       }
sorted_m = sorted(dict_m.items())
sorted_mLng = len(sorted_m)
odd = lambda i: (((i < sorted_mLng) and sorted_m[i]) or ('N/A', 'N/A'))
[ print(f"{a[0]} = {a[1]}\t{b[0]} = {b[1]}") 
for a, b in [ (sorted_m[i], odd(i+1))
for i in range (0, sorted_mLng, 2)] ]

或作为三列.....或或或...

odd = lambda i: (((i < sorted_mLng) and sorted_m[i]) or ('N/A', 'N/A'))
[ print(f"{a[0]} = {a[1]}\t{b[0]} = {b[1]}\t{c[0]} = {c[1]}") 
for a, b, c in [ (sorted_m[i], odd(i+1), odd(i+2))
for i in range (0, sorted_mLng, 3)] ]

或者尝试另一个更奇特的,如果你想要一个 Pythonic 版本:

dict_m = {
   'key1': 'v1l1', 'key2': 'val2', 'key3': 'val3', 'key4': 'val4', 
   'key10': 'v1l10', 'key20': 'val20', 'key30': 'val30', 'key40': 'val40', }

sorted_m = iter(sorted(dict_m.items()))
numOfCols = 2
try:
    while True:
        for _ in range(numOfCols):
            item = next(sorted_m)
            print(f"{item[0]}\t= {item[1]}\t\t", end="") 
        print()
except StopIteration:
    print()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM