【问题标题】:Picking a str out of a sorted JSON file in Python在 Python 中从排序的 JSON 文件中选择一个 str
【发布时间】: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


    【解决方案1】:

    试试这个

    a = sorted([z, zz, zzz], key=lambda x: int(x.split()[-1]), reverse=True)[0].split()[0]
    b = sorted([z, zz, zzz], key=lambda x: int(x.split()[-1]), reverse=True)[1].split()[0]
    c = sorted([z, zz, zzz], key=lambda x: int(x.split()[-1]), reverse=True)[2].split()[0]
    

    【讨论】:

      猜你喜欢
      • 2016-10-10
      • 1970-01-01
      • 1970-01-01
      • 2013-01-19
      • 2020-03-12
      • 1970-01-01
      • 2022-12-09
      • 1970-01-01
      • 2017-03-28
      相关资源
      最近更新 更多