【发布时间】:2014-10-14 23:11:07
【问题描述】:
我的问题:
我正在尝试将两个列表字典合并到一个新字典中,交替为每个键创建 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]
【问题讨论】:
-
如果列表的长度不同,您希望如何交织列表?我能想到的方法不止一种。
-
新列表应始终以字符串开头并以字符串结尾。 len(Ns) 始终为 len(strings)-1。
标签: python list dictionary