【发布时间】:2020-03-17 10:11:47
【问题描述】:
我有这个代码:
import json
import random
y = {}
y['red'] = {'name': "red", 'p': 0, 'rand': 0}
y['blue'] = {'name': "blue", 'p': 0, 'rand': 0}
y['green'] = {'name': "green", 'p': 0, 'rand': 0}
with open('y.json', 'w') as f:
json.dump(y, f)
f = open('y.json')
y = json.load(f)
for key, value in y.items():
y[key]['rand'] = random.randint(1, 101)
sorted_keys = sorted(y.keys(), key=lambda x: y[x]['rand'])
for i, key in enumerate(sorted_keys):
y[key]['p'] += i + 1
z = '%s%s%s' % (y['red']['name'], " ", y['red']['p'])
zz = '%s%s%s' % (y['blue']['name'], " ", y['blue']['p'])
zzz = '%s%s%s' % (y['green']['name'], " ", y['green']['p'])
a = sorted([z, zz, zzz], key=lambda x: int(x.split()[-1]), reverse=True)[0].split()[0]
b = "second"
c = "third"
print('\n'.join(sorted([z, zz, zzz], key=lambda x: int(x.split()[-1]), reverse=True)))
print( "\nWinner is:")
print(a)
print(b)
print(c)
计算红色、蓝色和绿色的随机数并在表格中排序。
现在我想说例如如果红色的数字最高,则蓝色为第二,绿色为第三:
Winner is:
red
Second is:
blue
Third is:
green
我的代码中已经有Winner is: red,但不知道如何修改sorted([z, zz, zzz], key=lambda x: int(x.split()[-1]), reverse=True)[0].split()[0] 使其适用于第二个和第三个。
有办法吗?
【问题讨论】:
标签: python json sorting lambda