我正在尝试使用使用嵌套列表的字典理解。只要钥匙是唯一的,一切正常。但是,如果存在多个密钥,我想将值附加到该密钥而不是覆盖该值。这可能使用理解吗?带有嵌套列表的字典理解,防止覆盖
seq1 = [[1, [1,2,3,4]], [2, [5,6,7]]]
seq2 = [[1, [1,2,3,4]], [1, [5,6,7]]]
print {key: [val] for key, val in seq1} # Or dict(seq1)
>>> {1: [[1, 2, 3, 4]], 2: [[5, 6, 7]]}
print {key: [val] for key, val in seq2}
>>> {1: [[5, 6, 7]]} # First value is overwritten
# Desired output:
def index_reads(reads):
result = {}
for i in reads:
d = dict([i])
for key, val in d.iteritems():
if key in result:
result[key].append(val)
else:
result[key] = [val]
return result
print index_reads(seq1)
>>> {1: [[1, 2, 3, 4]], 2: [[5, 6, 7]]}
print index_reads(seq2)
>>> {1: [[1, 2, 3, 4], [5, 6, 7]]}
对不起,我找不到这个问题的重复。
或使用'defaultdict' –
@KarolyHorvath是啊,确实;) – Kasramvd
谢谢,我会看看,但输出与预期略有不同。我现在将编辑,对不起。 – kezzos