如何在python3中统一转换字典列表值?

2024-09-30 12:11:23 发布

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

我有一个yaml文件,其中有几个字段是列表。你知道吗

它看起来像这样:

key0: "value0"
key1: ["value1-0", "value1-1", "value1-2"]
key2: ["value2-0", "value2-1", "value2-2"]
key3: "value3"

这自然会转换为PyYAML库中的Python字典。你知道吗

最后,我想得到一串键和值,如下所示:

--key0 value0 --key1 value1-0 --key1 value1-1 --key1 value1-2 ... --key3 value3

我想出了一个解决方案,这取决于我处理列表的事实,但有些东西让我感到困扰,让我想问,是否有一个更干净、通用和优雅的方式?你知道吗

UPD:在@senchuk回答之后,我想让自己更清楚一点。你知道吗

问题不在于任何解决办法。对于比我更熟悉Python的人来说,这只是一个基于观点的问题。我经常听到这种“Python式”的方式。这就是我要找的!一些有着时髦功能的东西就行了。数据转换没有任何限制。如果最好的方法是将所有标量值转换为列表,然后将所有内容转换为字符串,那就这样吧。我真的很好奇现代Python是如何做到这一点的。你知道吗


Tags: 文件yaml列表字典方式解决方案pyyamlkey2
2条回答

如果你已经有了一些东西可以把你所拥有的东西转换成字典,那么这应该是你想要的

d = {'key1' : 'value1', 'key2' : 'value2'}
stringFinal = ''
tempString = ''
for k, v in d.items():
    tempString = str(k) + ' ' + str(v)
    stringFinal =' ' + tempString + ' ' +  stringFinal
    tempString = ''
print(stringFinal)

您可以遍历字典来构建字符串。如果项目是一个列表,则必须遍历其元素。你知道吗

注意:由于dictionary是一个无序的集合,因此输出可能会有所不同。你知道吗

dict={"key0": "value0", "key1": ["value1-0", "value1-1", "value1-2"], "key2": ["value2-0", "value2-1", "value2-2"], "key3": "value3"}

s = ''
for k,v in dict.items():
    print(k, v)
    if type(v) is list:
        for elem in v:
            s+= ' ' + k + ' ' + str(elem) + ' '
    else:
        s+= ' ' + k + ' ' + str(v) + ' '

print(s)

>>>  key1 value1-0  key1 value1-1  key1 value1-2  key0 value0  key3 value3  key2 value2-0  key2 value2-1  key2 value2-2 

相关问题 更多 >

    热门问题