如何从字典中打印具有可变数量键+值的格式化字符串

2024-09-27 21:29:01 发布

您现在位置:Python中文网/ 问答频道 /正文

是否可以从字典中打印可变数量的key+值str.format格式()? 如果能在python2中起作用那就太好了。你知道吗

假设我有一个字典,里面有一些键+值,我必须打印这些键的键+值,这些键存储在一个列表/元组中。你知道吗

dict1 = { 'k1':'v1', 'k2':'v2', 'k3':'v3'}
to_print = ('k1', 'k2')
string = ''
for i in dict1:
    if i in to_print:
        string += "{" + i + "} " +  ', '

string = string.format(**dict1)
print(string[:-2])

以上代码给出

v1 , v2 

我希望它的格式如下:

[k1] v1 , [k2] v2

升级版:

如果字典在列表中,并且我需要在一行中打印一个字典中的键/值,则该解决方案面临挑战,例如:

list1  = [ { 'k1':'v1', 'k2':'v2', 'k3':'v3'} , { 'k1':'v4', 'k2':'v5', 'k3':'v6'} ] 
to_print = ('k1', 'k2')
for i in list1:
    for k,v in i.items():
        if k in to_print:
            elements = []
            elements.append(f"[{k}]: {v}")
            print(", ".join(elements))
[k1]: v1
[k2]: v2
[k1]: v4
[k2]: v5

我需要这样的东西:

[k1]: v1 , [k2]: v2
[k1]: v4 , [k2]: v5

之前,我通过SO中的分组函数解决了这个问题:

def grouped(iterable, n):
    "s -> (s0,s1,s2,...sn-1), (sn,sn+1,sn+2,...s2n-1), (s2n,s2n+1,s2n+2,...s3n-1), ..."
    return zip(*[iter(iterable)] * n)

有什么好办法吗?你知道吗

好吧,我想:

elements = []
for i in list1:
    elements = []
    for k,v in i.items():
        if k in to_print:
            elements.append(f"[{k}]: {v}")
    print(", ".join(elements))```

Tags: toinforstring字典k2k1elements
1条回答
网友
1楼 · 发布于 2024-09-27 21:29:01
dict1 = { 'k1':'v1', 'k2':'v2', 'k3':'v3'}
to_print = ('k1', 'k2')

elements = []
for key, val in dict1.items():
    if key in to_print:
        elements.append(f"[{key}]: {val}")

print(", ".join(elements))

或者可以使用列表理解来缩短时间:

print(", ".join([f"[{key}]: {val}" for key, val in dict1.items() if key in to_print]))

将产生:

[k1]: v1, [k2]: v2, [k3]: v3

相关问题 更多 >

    热门问题