比较随机结果并将其转换为 Python 中 JSON 文件"points"的简单方法



下面是我的代码的简化版本:

import json
import random
y = {}
y['red'] = {'name': "red", 'p': 0}
y['blue'] = {'name': "blue", 'p': 0}
y['green'] = {'name': "green", 'p': 0}
with open('y.json', 'w') as f:
json.dump(y, f)
f = open('y.json')
y = json.load(f)
rr = random.randint(1, 101)
rb = random.randint(1, 101)
rg = random.randint(1, 101)
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'])

print('n'.join(sorted([z, zz, zzz], key=lambda x: int(x.split()[-1]), reverse=True)))
with open('y.json', 'w') as f:
json.dump(y, f)

"random"-命令目前没有用处,但我想比较这3个,以便最高的随机数将3添加到"p",第二高的2添加到"p",最低的1添加到"普"。

示例:

如果rr = 22; rb = 66; rg = 44

那么输出应该是:

blue 3
green 2
red 1

因此,我的JASON文件中的p值为:

y['red'] = {'name': "red", 'p': 1}
y['blue'] = {'name': "blue", 'p': 3}
y['green'] = {'name': "green", 'p': 2}

我知道每次运行程序时JSON文件都会被覆盖,但这只是一个简化版本。

我也知道我可以使用if语句,但我有点不想这样做,因为我必须把很多语句串起来,如果我想添加更多的"颜色",那就不太好看了,而且需要很多时间。

我尽力解释我的问题,但如果还有任何问题请问我。

谢谢:-(

您可以向dict添加另一个项,然后对该项上的dict键进行排序。

替换:

rr = random.randint(1, 101)
rb = random.randint(1, 101)
rg = random.randint(1, 101)

带有:

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 = [['red', 22], ['blue', 66], ['green', 44]]
z.sort(key = lambda x: x[-1])

然后更改p:的值

z = [(z[x][0],x+1) for x in range(len(z))]

结果应该是:

[('red', 1), ('green', 2), ('blue', 3)]

最新更新