根据PYTHON中的字典来证明键和值的合理性

问题描述

我正在开发一个程序,该程序将证明来自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     |
==============================