Как сортировать значения словаря от самого высокого до самого низкого?

Вот как я решил использовать интерактивные и видимые ссылки в TextView (по коду)

private void setAsLink(TextView view, String url){
        Pattern pattern = Pattern.compile(url);
        Linkify.addLinks(view, pattern, "http://");
        view.setText(Html.fromHtml("<a href='http://"+url+"'>http://"+url+"</a>"));
    }
0
задан Gvido Kārlis Šķuburs 13 July 2018 в 12:47
поделиться

4 ответа

вы, вероятно, захотите использовать один dict, а не один для каждого, например:

scores = {
    'a': 0,
    'b': 0,
    'c': 0,
    'd': 0,
    'e': 0,
}

И затем вы можете отслеживать самого высокого игрока счёта по мере вычисления точек:

point_scored = input('Enter series of charachters indicating who scored a point: ')


for i in point_scored:
    if not scores.get(i) is None:
        scores[i] += 1
    elif not scores.get(i.lower()) is None:
        scores[i.lower()] -= 1
    else:
        print(str(i) + ' is not a valid player...')

winner = max(scores, key=scores.get)

print(scores)

print('Winner is ' + winner)
0
ответ дан dheiberg 17 August 2018 в 12:49
поделиться
  • 1
    спасибо за ваш ответ, я постараюсь применить его :) – Gvido Kārlis Šķuburs 13 July 2018 в 12:59
  • 2
    Я согласен, что это путь, но вам нужно обработать букву верхнего регистра -= 1 – Chris_Rands 13 July 2018 в 12:59
  • 3
    Также scores = dict.fromkeys('abcde', 0) – Chris_Rands 13 July 2018 в 12:59
  • 4
    @Chris_Rands. Вы правы, я просто просматривал и читал его как дескриптор как верхнего, так и нижнего регистра, а не для того, чтобы делать разные вещи. Также спасибо за демонстрацию этого способа инициирования dicts, что супер аккуратно! – dheiberg 13 July 2018 в 13:01
  • 5
    @ GvidoKārlisŠķuburs, как отметил Крис, мое решение только объясняет добавление очков, а не их удаление, что усложняет его немного больше и больше не делает его оптимальным способом. Возможно, вам придется пересчитать максимальные баллы, используя один из других перечисленных способов в конце – dheiberg 13 July 2018 в 13:02

Это будет работать:

max((i, name) for d in (a,b,c,d,e) for name, i in d.items())[1]

1
ответ дан ÑØØLÌÊ 17 August 2018 в 12:49
поделиться
  • 1
    – Gvido Kārlis Šķuburs 13 July 2018 в 12:58
  • 2
    @ ÑØØLÌÊ, пожалуйста, не просите такую ​​репутацию, модератор отметит ваш комментарий. – Nihal 13 July 2018 в 13:15
  • 3
    Приятно, я бы предложил ему фактически превратить его в словарь – Bharel 13 July 2018 в 13:20
0
ответ дан Gvido Kārlis Šķuburs 17 August 2018 в 12:49
поделиться
0
ответ дан joery de vries 17 August 2018 в 12:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: