gpt4 book ai didi

python - 在python中合并两个具有相同键的列表字典

转载 作者:太空狗 更新时间:2023-10-30 02:03:56 27 4
gpt4 key购买 nike

我的问题:

我正在尝试将两个列表字典合并到一个新字典中,交替为每个键创建 2 个原始列表的元素以创建该键的新列表。

例如,如果我有两个字典:

strings = {'S1' : ["string0", "string1", "string2"], 'S2' : ["string0", "string1"]}

Ns = {'S1' : ["N0", "N1"], 'S2' : ["N0"]}

我想合并这两个词典,这样最终的词典看起来像这样:

strings_and_Ns = {'S1': ["string0", "N0", "string1", "N1", "string2"], 'S2': ["string0", "N0", "string1"]}

或者更好的是,将列表中的字符串与每个键连接在一起,例如:

strings_and_Ns = {'S1': ["string0N0string1N1string2"], 'S2': ["string0N0string1"]}

(我正在尝试将 DNA 序列片段连接在一起。)

到目前为止我尝试了什么:

压缩

 for S in Ns:   
newsequence = [zip(strings[S], Ns[S])]
newsequence_joined = ''.join(str(newsequence))
strings_and_Ns[species] = newsequence_joined

这不会将序列连接成一个字符串,并且字符串的顺序仍然不正确。

使用默认字典

from collections import defaultdict
strings_and_Ns = defaultdict(list)

for S in (strings, Ns):
for key, value in S.iteritems():
strings_and_Ns[key].append(value)

这个字符串的顺序也不正确...

以某种方式沿着列表移动每个键...

for S in strings: 
list = strings[S]
L = len(list)
for i in range(L):
strings_and_Ns[S] = strings_and_Ns[S] + strings[S][i] + strings[S][i]

最佳答案

strings_and_Ns = {}
for k,v in strings.items():
pairs = zip(v, Ns[k] + ['']) # add empty to avoid need for zip_longest()
flat = (item for sub in pairs for item in sub)
strings_and_Ns[k] = ''.join(flat)

flat 是根据此处接受的答案构建的:Making a flat list out of list of lists in Python

关于python - 在python中合并两个具有相同键的列表字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26371924/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com