python中基于某种条件的对象数组中的互斥数组
正如标题所解释的,我想从匹配以下某个条件的对象数组中创建两个互斥列表(list1和list2),下面是一个对象示例python中基于某种条件的对象数组中的互斥数组,python,algorithm,data-structures,Python,Algorithm,Data Structures,正如标题所解释的,我想从匹配以下某个条件的对象数组中创建两个互斥列表(list1和list2),下面是一个对象示例 reviews = [ ... { ... "mood": "happy" ... }, { ... &qu
reviews = [
...
{
...
"mood": "happy"
...
},
{
...
"mood": "sad"
...
},
{
...
"mood": "neutral"
...
},
...
]
现在我从用户那里得到了两种情绪,分别是m1和m2,我循环查看数组,并将每个对象分别添加到列表1(如果m1==情绪)和列表2(如果m2==情绪)。列表1和列表2最多应该有5条评论,它们不应该是空的。保证m1和m2始终匹配审查
for review in reviews:
if review['mood'] == m1:
list1.append(review)
if review['mood'] == m2:
list2.append(review)
假设用户给m1和m2都表示“高兴”,现在这两个列表将有相同的评论。我希望它们是排他性列表,这意味着如果一篇评论在列表1中,它就不应该在列表2中。我已经使用一个map对象解决了这个问题,该对象将包含添加到列表1的评论的评论id,并且我只会在其键值对为None时将评论添加到列表2。
但是我觉得有更好的方法来解决这个问题。最直接的方法是使用
elif
:
for review in reviews:
if review['mood'] == m1:
list1.append(review)
elif review['mood'] == m2:
list2.append(review)
如果第一个
条件为真,则第二个条件甚至不会被检查。因此,我认为您需要维护一个计数器,这将解决您的问题
#m1==m2
count=0
for review in reviews:
if count%2==0:
list1.append(review)
else:
list2.append(review)
count+=1
让我知道这对你有用 这将使列表2为空,不是吗?如果m1==m2
是的,list2
将保持为空,但这是所需的行为,不是吗?不,请阅读问题,它们不能为空,哪些应该在list1
中,哪些在list2
中?如果您可以准确地指定,那么实际的解决方案很可能是微不足道的。没有任何标准只要求它们相互排斥。您需要提供您所期望的示例输出!我想这会有用的,谢谢