Сохранить пользовательский словарь ввода - PullRequest
0 голосов
/ 06 января 2020

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

Я провел поиск и попытался использовать Pickle для сохранения этих данных. Мой словарь хранится здесь:

def game():
    return {
        'players': [],
        'active_players':[],
        'running_game': False,

Я получаю данные об игроке отсюда:

def player_register(mm,name):
    board1_for_ship_placement = create_grid(columns_size,rows_size)
    board2_for_showing = create_grid(columns_size,rows_size)
    player = {
        'name':name,
        'played_games': 0,
        'victory': 0,
        'ships_available' : {
            "lancha":0,
            "submarino":0,
            "fragata":0,
            "cruzador":0,
            "porta_avioes":0
        },
        'ships_in_use':[],
        'board1': board1_for_ship_placement,
        'board2': board2_for_showing
    }

    mm['players'].append(player)

Это данные, которые мне нужно сохранить и я могу снова загрузить в свою программу. Имя , сыгранные игры и victorys .

Этот метод собирает информацию из словарей.

Теперь я видел несколько примеров как это:

import pickle
my_dict = {“example”:”dog”, “example2″:”cat”}
with open(‘myfile.txt’, ‘wb’) as f:
pickle.dump(mydict, f)

Загрузка:

f = open(‘myfile.txt’, ‘rb’)
new_dict = pickle.load(f)
f.close()

Теперь, как я могу изменить это, чтобы сохранить мои данные? Я пробовал это, но безрезультатно:

import pickle
**my_dict = game()**
with open(‘myfile.txt’, ‘wb’) as f:
pickle.dump(mydict, f)

Кто-нибудь может мне помочь? Мне не нужно мариновать, JSON тоже хорошо.

1 Ответ

0 голосов
/ 06 января 2020

Я добавил некоторые данные образца в функцию game, и она работала нормально. Если вы не получили правильный результат, возможно, что-то не так с вашей game функцией.

Сохранение:

import pickle


def game():
    return {
        'players': ['p1', 'p2'],
        'active_players': ['a_p1', 'a_p2'],
        'running_game': False
    }


my_dict = game()
with open("my_data.pkl", "wb") as f:
    pickle.dump(my_dict, f)

Загрузка:

import pickle

with open("my_data.pkl", "rb") as f:
    my_data = pickle.load(f)

print(my_data)
# Output:
# {'players': ['p1', 'p2'], 'active_players': ['a_p1', 'a_p2'], 'running_game': False}
...