我正在嘗試使用使用嵌套列表的字典理解。只要鑰匙是唯一的,一切正常。但是,如果存在多個密鑰,我想將值附加到該密鑰而不是覆蓋該值。這可能使用理解嗎?帶有嵌套列表的字典理解,防止覆蓋
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