python 数据分组后看每组多少个_分组问题,32个数分8组,每组中数不能有相同的,请用python编程?...

from operator import itemgetter

def grouping(dataDict):

keys = [p[0] for p in

sorted(dataDict.items(), key=itemgetter(1), reverse=True)]

groups, temp, result = [[[] for i in range(8)]], [], []

for p in keys:

num, glen = dataDict[p], len(groups)

while num:

if num < glen:

glen -= 1

continue

n = num - glen + 1

for i in range(n):

groups[glen - 1][i].append(p)

temp.append(groups[glen - 1][:n])

del groups[glen - 1][:n]

num, glen = num - n, glen - 1

for lst in temp:

if len(lst[0]) == 4:

result += lst

else:

groups.append(lst)

temp = []

groups = [lst for lst in groups if lst and len(lst[0]) < 4]

groups.sort(key=len)

return result

if __name__ == '__main__':

data = {1: 7, 2: 4, 3: 3, 4: 5, 5: 7, 6: 4, 7: 2}

print(grouping(data))

算法的主旨是尽可能分散地填充。字数问题,如不理解请问我。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值