Как получить пользовательский ввод для ссылки на имя словаря с тем же именем, что и ввод? - PullRequest
0 голосов
/ 04 марта 2020

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

Но я не могу понять, как взять список имен, заданных пользовательским вводом (которые, я думаю, типа str), в качестве имен переменных словаря .... это то, что у меня есть до сих пор:

Morgan = {
    "Social Deduction" : 5,
    "Deck Building" : 2,
    "Dice games" : 3,
    "classic Card Games" : 5,
    "Simple Party Games" : 5,
    "Strategy" : 3,
    "Deduction" : 4,
    "Blacklist" : "Deception"
    }

Adam = {
    "Social Deduction" : 5,
    "Deck Building" : 5,
    "Dice games" : 5,
    "classic Card Games" : 5,
    "Simple Party Games" : 5,
    "Strategy" : 5,
    "Deduction" : 5,
    }

Guy = {
    "Social Deduction" : 1,
    "Deck Building" : 2,
    "Dice games" : 5,
    "classic Card Games" : 5,
    "Simple Party Games" : 2,
    "Strategy" : 3,
    "Deduction" : 4,
    }

def main():
    accepted = input('Who is coming today? ').split(",")
    for i in range(len(accepted)-1):
        print(i)
        if i==0:
            print(cumulativeComp = accepted[i].items() & accepted[i+1].items())
        elif i < len(accepted)-1:
            print(cumulativeComp = cumulativeComp.items() & accepted[i+1].items())
        else:
            pass

if __name__== "__main__":
    main()  

Есть мысли или предложения?

Ответы [ 2 ]

0 голосов
/ 04 марта 2020

Гораздо лучше поместить эти словари в один основной словарь, например, ответ Алекса .

Чтобы ответить на ваш вопрос, вы можете использовать globals():

Morgan = {
    "Social Deduction" : 5,
    "Deck Building" : 2,
    "Dice games" : 3,
    "classic Card Games" : 5,
    "Simple Party Games" : 5,
    "Strategy" : 3,
    "Deduction" : 4,
    "Blacklist" : "Deception"
}

def main():
    print(globals()['Morgan']

main()
0 голосов
/ 04 марта 2020

Составить словарь словарей:

game_preferences = {
   "Morgan" : {
    "Social Deduction" : 5,
    "Deck Building" : 2,
    "Dice games" : 3,
    "classic Card Games" : 5,
    "Simple Party Games" : 5,
    "Strategy" : 3,
    "Deduction" : 4,
    "Blacklist" : "Deception"
    },
   "Adam" : {
    "Social Deduction" : 5,
    "Deck Building" : 5,
    "Dice games" : 5,
    "classic Card Games" : 5,
    "Simple Party Games" : 5,
    "Strategy" : 5,
    "Deduction" : 5,
    },
   "Guy" : {
    "Social Deduction" : 1,
    "Deck Building" : 2,
    "Dice games" : 5,
    "classic Card Games" : 5,
    "Simple Party Games" : 2,
    "Strategy" : 3,
    "Deduction" : 4,
    },
   }
...