【发布时间】:2021-12-26 04:17:12
【问题描述】:
我已经编写了一个小代码谁属性,一个列表的每个元素,一个分数...要做到这一点,我需要这样做(简化代码):
group={1:["Jack", "Jones", "Mike"],
2:["Leo", "Theo", "Jones", "Leo"],
3:["Tom", "Jack"]}
already_chose=["Tom","Mike"]
result=[]
for group_id in group:
name_list = group[group_id]
y=0;x=0
repeat=[]
for name in name_list:
if name in already_chose:
y+=1
elif name not in repeat:
x+=1
repeat.append(name)
score_group=x-y
result.append([group_id,score_group])
输出:[[1, 1], [2, 3], [3, 0]]
如果您阅读此代码,问题在于,它并未针对大枚举(超过 7000 个组和 100 个组名)进行优化...
我希望有人可以帮助我吗?非常感谢
【问题讨论】:
-
你想在这里做什么?
-
很难说你的最终结果应该是什么。对于简单的优化,请使用集合而不是
already_chose的列表... -
我尝试为每个团队分配一个分数(由 x 和 y 设置)
-
x 在我们第一次看到这个名字时得到 +1 如果名字已经在选择列表中,你得到 +1
标签: python list optimization mathematical-optimization enumeration