<p>从这个示例中,我猜您将受益于使用namedtuples,但是解决方案是基于列表理解的:</p>
<pre><code>desiredlist=[list2[0][:3]+[n2,list2[0][4]] if n1==list2[0][1]
else [id,n1,dates,n2,0] for id,n1,dates,n2,n3 in list1]
</code></pre>
<p>使用namedtuples,您可以得到如下结果:</p>
<pre><code>from collections import namedtuple
Record=namedtuple("Record","Id n1 dates n2 n3")
Example1=Record('user1', 186, 'Feb 2017, Mar 2017, Apr 2017', 550, 555)
Example2=Record('user2', 282, 'Mai 2017', 3579, 3579)
Example3=Record('user1', 186, 'Feb 2017, Mar 2017, Apr 2017, Mai 2017', 0, 740)
list1=[Example1,Example2]
# Instead of creating a list of 1 element ( list2) I would rather compare it against the namedtuple directly
list2=Example3
# now the merging would look like this
desiredlist=[Record(*list2[:3],n2=i.n2,n3=list2.n3) if i.n1==list2.n1
else Record(*i[:4],n3=0) for i in list1]
# now desiredlist would look like:
[Record(Id='user1', n1=186, dates='Feb 2017, Mar 2017, Apr 2017, Mai 2017', n2=550, n3=740), Record(Id='user2', n1=282, dates='Mai 2017', n2=3579, n3=0)]
</code></pre>
<p>如果您不需要附加或更改每个记录的内容,它将使用namedtuples节省空间,并帮助您保持记录的可读性。否则,您将不得不使用可变容器,无论是dict还是list</p>