【发布时间】:2016-08-11 02:48:33
【问题描述】:
使用 Python 2.7。我有一组由 id 标签组成的数据:
SET1=[{'MISC': u'2759'}, {'MISC': u'2759'}, {'MISC': u'2759'}, {'MISC': u'2758'},{'MISC': u'2758'}, {'MISC': u'1751'}]
和另一个由不同的id标签组成的集合:
SET2= [u'15672542c8ed280b', u'1566b77702f8865f', u'1565c2241aebb314', u'155c6888c507e365', u'155c5b8ded9a7c03', u'155c1173f58f1494']
如您所见,集合是一对一的,每个 MISC 标签都与 SET2 中的相应 id 相关。例如,SET1 中的第一个元素 {'MISC': u'2759'} 需要与 SET2 中的第一个元素 u'15672542c8ed280b' 相关。
理想情况下,我想构建一个像这样的数据结构:
Matched_IDS=[{2759, 15672542c8ed280b}, {2759, 1566b77702f8865f} , {2759, 1565c2241aebb314}, {...}, {...} ]
到目前为止,我尝试了这种方法,但是由于我使用了两个 for 循环,因此我对数据进行了两次迭代,并得到了一个非常难看的集合:
MSGMatch=[]
for a in SET1:
for b in SET2:
MSGMatch.append({str(a),str(b)})
print(MSGMatch)
任何人有一个更优雅、更有效的解决方案,他们可以为我指明正确的方向吗?
【问题讨论】:
-
如果它们是真正的集合,元素没有任何特定的顺序,因此两个集合之间的元素不能对应。你真的是说你有 2 个列表?
-
你为什么不直接压缩?
-
请注意,在 Python 中 set 是一种数据类型。最好重命名您的列表以避免任何混淆。
-
@ScottHunter 是的,我的意思是列表,它们现在都是列表