Python-根据 2 个列表中的增量值添加到字典

标签 python list dictionary increment

我创建了 2 个列表,并为每个项目添加了递增值。原因是每个列表中的值将在字典中连接在一起。然而,每个列表中的值不是 1 对 1 对。这就是为什么我添加递增值以帮助将每个键与其对应的值相关联。

这是我列表中的一些示例数据:

list_a = ['abc|1','bcd|2','cde|3']
list_b = ['1234|1','2345|2','3456|2','4567|2','5678|3']

因此,理想情况下,我要做的是遍历两个列表,然后根据递增值的配对生成一个字典。我猜测适用的值必须是一个列表?

下面是理想的输出:

my_dict = {'abc|1':'1234|1','bcd|2':['2345|2','3456|2','4567|2'],'cde|3':'5678|3'}    

任何帮助将不胜感激, 提前致谢:)

最佳答案

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())

这与您发布的目标接近,但我认为它实际上更好。

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']}

您可以看到我们的区别仅在于将单例(我)或不(您)列入名单。我认为我的方法更好的原因是,如果所有值都是列表,任何代码使用这个结果可能会更容易,所以它不需要处理两个单个字符串和字符串列表。就像我更容易生成列表一样。

但如果您仍然喜欢您的方式,请将我上面的最后一行更改为:

my_dict = {k: v if len(v) > 1 else v[0] for k, v in tmp.values()}

关于Python-根据 2 个列表中的增量值添加到字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30347026/

相关文章:

python - 如何在纯Python中运行spark mllib决策树模型?

python - Python 3 中的 UTF-16 编码和日语

python - 使用正则表达式(Python)进行循环,在匹配后附加到列表

python - 编辑字典中的值

python - 无法在 django 1.8 中使用自定义用户模型创建 super 用户

python - haystack ElasticsearchDocumentStore 无法连接 Elasticsearch

python - 在Python中编写一行,最好使用什么数据结构?

list - Scala:从第一个非零元素切分列表

.net - Dictionary<TKey, TValue> 中的哈希码

dictionary - 在 dynamodb 中更新字典的成本?