2015-02-28 2 views
0

Так что мне нужно создать список, который сохранит входные данные пользователей (имя и их 3 оценки), а затем добавит эту информацию в один из 3-х файлов. Я попытался сделать это, добавив данные в список, а затем список в словарь, но это, похоже, не работает. Я действительно новичок в python, поэтому очень ценю любую помощь. Это мой код;Можете ли вы добавить список в словарь?

dict1 = {} 
dict2 = {} 
dict3 = {} 
list1 = [] 
list2 =[] 
list3 =[] 

def main(): 
    name= input ('What is your name?') 
    for i in range(0,3) 
     score = input("Enter your score: ") 
     clss =input('which class?') 
     if clss==1: 
      list1.append (name, score) 
     elif clss==2: 
      list2.append (name, score) 
     elif clss==3: 
      list3.append (name, score) 

Здесь я хочу добавить список в один из 3 словарей в зависимости от класса

def loop(): 
    x=input('Do you want to make an entry?') 
    if x=='Yes': 
     main() 
    elif x=='No': 
     sys.exit(0) 

loop() 
+0

dict1 = { "Entry": песни1} –

+0

Спасибо за thiss :) – Rutwb2

ответ

1

Вы должны иметь списки в словаре, чтобы иметь возможность добавить к ним. Вы можете сделать что-то вроде:

scores = {"class1": [], "class2": [], "class3": []} 

def main(): 
    name= input ('What is your name?') 
    for i in range(0,3) 
     score = input("Enter your score: ") 
     clss =input('which class?') 
     if clss==1: 
      scores["class1"].append({"name": name, "score": score}) 
     elif clss==2: 
      scores["class2"].append({"name": name, "score": score}) 
     elif clss==3: 
      scores["class3"].append({"name": name, "score": score}) 
    print scores 
+0

Спасибо, это действительно помогло – Rutwb2

0

Вы пытались использовать defaultdict? Пример из питона документации:

>>> s = 'mississippi' 
>>> d = defaultdict(int) 
>>> for k in s: 
...  d[k] += 1 
... 
>>> d.items() 
[('i', 4), ('p', 2), ('s', 4), ('m', 1)] 

Вы можете увидеть еще один пример использования defaultdict here

0
dictionary = {i:x for i,x in enumerate([['List', 'one'],['List', 'two']])} 

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

d = {} 

while True: 
    # Ask the user to make a new entry. 
    raw = raw_input('Make a new entry?') 

    if raw.lower() in ['y', 'yes']: 
     # Ask the users name. 
     name = raw_input('Your name?') 

     # Create new entrypoint in the dictionary containing a empty list bound to the name 
     d[name] = [] 

     for score in range(3): 
      # Ask the user for three scores 
      d[name].append(raw_input('Enter a new score: ')) 

    # If the input doesn't match you break out of the loop. 
    else: 
     break 

    # You can at any time print the contents of the dictionary. 
    # print d 
Смежные вопросы