问题描述
我正在开发一个程序,该程序将证明来自dict
的{{1}}中的某些键和值。
这是我的代码主体的外观:
make_table
这就是我需要打印的结果:
def make_table(**kwargs):
for key,value in kwargs.items():
pass
make_table(
key_position="right",value_position="center",song="Style",artist_name="Taylor $wift",album="1989"
)
我现在需要知道的是如何证明kwargs.items()的内容与结果中要求的一样,然后打印它们但不打印以下行:key_position =“ right”和value_position =“ center”,因为它们功能只是为了证明。
谢谢。
解决方法
使用格式字符串的示例:
def make_table(**kwargs):
s = "="*29
for key,value in kwargs.items():
s += f"\n|{key:>15} |{value:^10}{'|':<2}"
s += "="*29
return s
kv = {YOUR DICT}
print(make_table(**kv))
,
此函数按照您的要求打印表,但它更改了函数签名以使事情更简单。另外,它可以通过查看键和值的最长长度来适应它们的长度。
def make_table(d,key_align,val_align):
max_key_len = max(map(len,d.keys()))
max_val_len = max(map(len,d.values()))
n_equals = (2 + max_key_len + 3 + max_val_len + 2)
s = n_equals * '=' + '\n'
for key in d:
s += "| "
if key_align == 'left':
s += "{key:<{length}}".format(key=key,length=max_key_len)
elif key_align == 'right':
s += "{key:>{length}}".format(key=key,length=max_key_len)
elif key_align == 'center':
s += "{key:^{length}}".format(key=key,length=max_key_len)
s += " | "
if val_align == 'left':
s += "{val:<{length}}".format(val=d[key],length=max_val_len)
elif val_align == 'right':
s += "{val:>{length}}".format(val=d[key],length=max_val_len)
elif val_align == 'center':
s += "{val:^{length}}".format(val=d[key],length=max_val_len)
s += " |\n"
s += n_equals * '='
return s
song_dict = {
"Song": "Style","Artist Name": "Taylor $wift","Album": "1989"
}
table = make_table(song_dict,key_align='right',val_align='center')
print(table)
Python脚本的输出:
==============================
| Song | Style |
| Artist Name | Taylor $wift |
| Album | 1989 |
==============================