在python 3中比较字典中的列表类型值

时间:2018-10-31 16:05:31

标签: python string list

我正在为练习游戏创建游戏,但是现在我陷入了困境,因此我需要一些帮助。

我已经学习了几个月,现在遇到了以下问题:

我有两个字典,第一个key-valueuser-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 :(得分:0)

也许您可以将每个用户的预测与事件结果压缩在一起,然后并排显示数据?

例如:

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=',')

答案 1 :(得分:0)

因此,我进行了一些重新命名,以使其更加结构化。

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

这就是你想要的吗?