Nun*_*hux 5 python dictionary list increment
我有2个已创建的列表,并为每个项目添加了递增值.原因是每个列表中的值将在字典中连接在一起.但是,每个列表中的值不是1对1对.这就是为什么我添加了递增值以帮助将每个键与其对应的值相关联.
以下是我列表中的一些示例数据:
list_a = ['abc|1','bcd|2','cde|3']
list_b = ['1234|1','2345|2','3456|2','4567|2','5678|3']
Run Code Online (Sandbox Code Playgroud)
理想情况下,我要做的是运行两个列表,然后根据递增值生成基于配对的字典.我猜测适用的值必须是一个列表?
以下是理想的输出:
my_dict = {'abc|1':'1234|1','bcd|2':['2345|2','3456|2','4567|2'],'cde|3':'5678|3'}
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激,在此先感谢:)
list_a = ['abc|1','bcd|2','cde|3']
list_b = ['1234|1','2345|2','3456|2','4567|2','5678|3']
tmp = {k.split('|')[1]: (k, []) for k in list_a}
for v in list_b:
tmp[v.split('|')[1]][1].append(v)
my_dict = dict(tmp.values())
Run Code Online (Sandbox Code Playgroud)
这接近您发布的目标,但我认为实际上更好。
goal: {'abc|1': '1234|1', 'bcd|2': ['2345|2', '3456|2', '4567|2'], 'cde|3': '5678|3' }
mine: {'abc|1': ['1234|1'], 'bcd|2': ['2345|2', '3456|2', '4567|2'], 'cde|3': ['5678|3']}
Run Code Online (Sandbox Code Playgroud)
您可以看到我们的区别只是将单身人士(我)或不(您)放入列表中。我认为我的方法更好的原因是,如果所有值都是列表,则使用此结果的任何代码可能会更容易,因此它不需要处理单个字符串和字符串列表。就像我只制作列表更容易一样。
但如果您仍然喜欢自己的方式,请将我上面的最后一行更改为:
my_dict = {k: v if len(v) > 1 else v[0] for k, v in tmp.values()}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
86 次 |
最近记录: |