繁体   English   中英

如何将键和值从字典连接到列表?

[英]How to concat key and value from dictionary to list?

我正在尝试将字典中的键和值连接起来,我想根据键将它们放在子列表中; 但我没有成功。 到目前为止,我所拥有的(在Python 2.7上工作):

我设法将键和值连接起来,但没有将它们拆分到不同的子列表中。

dict = {'v1':[1, 2, 3], 'v2': [1, 2, 3, 4]}

concat = []
for key in dict.keys():
    vals = dict [key]
    for v in vals:
        concat.append(str(key + '_' + str(v)))

我得到:

 ['v1_1', 'v1_2', 'v1_3', 'v2_1', 'v2_2', 'v2_3', 'v2_4']

但我想:

[['v1_1', 'v1_2', 'v1_3'], ['v2_1', 'v2_2', 'v2_3', 'v2_4']]
dict = {'v1':[1, 2, 3], 'v2': [1, 2, 3, 4]}
res=[]
for key in dict.keys():
    vals = dict [key]
    res.append([ key+'_'+str(v) for v in vals])

您可以使用此列表理解。 Python 3.6以上版本。

>>> [[ f'{k}_{x}' for x in dict[k] ] for k in dict]
[['v1_1', 'v1_2', 'v1_3'], ['v2_1', 'v2_2', 'v2_3', 'v2_4']]

或对于Python <3.6。

>>> [[ '%s_%d' % (k,x)  for x in d[k] ] for k in d]
[['v1_1', 'v1_2', 'v1_3'], ['v2_1', 'v2_2', 'v2_3', 'v2_4']]

您将在for循环的两个级别上追加到同一列表。 更改为

for key in dict.keys():
    sublist = []
    vals = dict [key]
    for v in vals:
        sublist.append(str(key + '_' + str(v)))
    concat.append(sublist)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM