сравнить значения типа списка в словарях в python 3 - PullRequest
0 голосов
/ 31 октября 2018

Я создаю игру для тренировок, но сейчас я застрял, поэтому мне нужно немного помочь.

Я изучал это в течение нескольких месяцев, и теперь я застрял с проблемой, описанной ниже:

У меня есть два словаря, первые key - value являются user - predictions.

Второй race_event - the_result.

User_predictions = {"Daniel": ["1st", "2nd", "3rd","4th","5th","6th","7th","8th","9th","10th"], ......., "Mike":"[10 more entries]"}

Result_event = {"Australia": [Results 1-20], ......, "Monaco":"[Results 1-20]"}

Пока у меня 7 гоночных событий

Моя цель - сравнить списки в двух словарях.
то есть посмотреть список Daniels,....., Mikes для Австралии и сравнить со списком в словаре result_event для Австралии (т.е. первое значение)

Я понимаю, что, вероятно, это слишком усложнило, но ввод правильного кода должен сгладить все это. Я искал в Интернете и пробовал разные хитрости, но без удачи я все еще новичок, так что, если есть встроенная функция или что-то еще, что, по вашему мнению, может помочь, пожалуйста, поделитесь.

Или, если вы считаете, что я должен переформатировать свои значения dict или попробовать что-то еще, пожалуйста, поделитесь. Я не загрузил ни одного кода, так как кажется, что ничего не работает.

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Так что я немного прибегнул к переименованию и сделал его более структурированным.

predictions = {"australia" : {"UserA" : ["Hamilton", "Vettel", "Bottas"], "UserB" : ["Vettel", "Raikonnen", "Hamilton"]}}
results = {"australia" : ["Vettel", "Bottas", "Verstappen"]}

for country, list_finish in results.items():
    print("Positions for GP in {country}:".format(country=country))
    for position_number, position_finisher in enumerate(list_finish, 1):
        print(str(position_number)+". "+position_finisher)

    print("These were the tips:")
    for username, list_prediction in predictions[country].items():
        print("Prediction by {user}:".format(user = username))
        for position_number, position_finisher in enumerate(list_prediction, 1):
            print(str(position_number)+". "+position_finisher)
    print("\n\n")

Если вы скопируете и вставите это в скрипт, вы получите такой вывод:

Positions for GP in australia:
1. Vettel
2. Bottas
3. Verstappen
These were the tips:
Prediction by UserA:
1. Hamilton
2. Vettel
3. Bottas
Prediction by UserB:
1. Vettel
2. Raikonnen
3. Hamilton

Это то, что вы хотите?

0 голосов
/ 31 октября 2018

Возможно, вы могли бы связать прогнозы каждого пользователя с результатом события, а затем отобразить данные рядом?

Например:

for user in User_predictions:
    compare = zip(User_predictions[user], Result_event['Australia'])
    print('Position', '{} prediction'.format(user), 'Result', sep=',')

    for position, (prediction, result) in enumerate(compare, start=1):
        print(position, prediction, result, sep=',')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...