[英]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.