我列出了具有相同键和不同值的字典,但有时可能是重复的:
[{'colorName': u'red',
'color_thumb': [],
'main_zoom_picture': u'webcontent/0007/991/393/cn7991393.jpg',
'pic_uris': [(u'S', u'webcontent/0007/991/248/cn.jpg')],
'swatch_image_path': u'webcontent/0007/991/248/cn7991248.jpg'},
{'colorName': u'red',
'color_thumb': [],
'main_zoom_picture': u'webcontent/0007/991/393/cn7991393.jpg',
'pic_uris': [(u'S', u'webcontent/0007/991/248/cn.jpg')],
'swatch_image_path': u'webcontent/0007/991/248/cn7991248.jpg'}]
我在做:
^{pr2}$接收:
^{3}$
这对我来说是你的数据集的诀窍。
已采取from this question
您的循环已反转;首先需要循环^{cd1>}*上:
列表理解以嵌套顺序列出循环;左侧是最外层的。
下一个问题是,您的值包含列表,这些列表不能添加到未经更改的集合中。
接下来,您需要使用set外部到循环,以测试是否在之前看到字典:
^{pr2}$这里^{cd2>}负责从每个字典生成一个不可变的元组:
^{pr3}$排序确保即使对于具有不同键顺序的字典(可以根据字典的插入和删除历史更改)检查是否仍然有效。
并且^{cd3>}用于跟踪到目前为止已看到的副本,以筛选出任何后续重复项:
^{pr4}$马蒂金·皮特尔斯关于你在理解清单时的错误的解释是正确的。为列表中的每个dict返回的items()将是一个列表。换句话说,集合不能散列列表列表。在
但是,可以在一个集合中存储一个元组。所以您可以对代码行进行以下更改。在
而且,克里斯托夫·黑格曼的回答非常优雅。如果你有时间和爱好,请检查一下iTerools(我最近发现的,很好用)。在
我向克里斯托夫道歉,因为我会投票给你的答案,但我最近刚成为社区成员。所以我没有代表:(
相关问题 更多 >
编程相关推荐