2016-10-06 4 views
0

Я пишу тайну убийства - очень похоже на Clue. Я использую словари для хранения всей моей информации. Мой вопрос: есть ли способ перетасовать значения словаря, которые вытягивают из заданного диапазона целых чисел? Я хочу, чтобы каждая игра перетасовала определенные значения в словарях при запуске новой игры. Прямо сейчас я сосредоточен на размещении символов ... Я пытаюсь найти лучший способ перетасовать места персонажа после каждой игры (места [current_room] ["char"]. Как только я пойму, как это сделать, я хочу применить это к связке других аспектов игры - с идеей создания совершенно новой тайны, чтобы решить каждую игру Любые предложения приветствуютсяПеретасовка определенных значений в словаре (Python 3.5)

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

ОКОНЧАТЕЛЬНЫЙ ИЗОБРАЖЕНИЕ Я меняя значение конкретных клавиш, я хочу «перетасовать», отредактировав словарь. местоположения [1] ["char"] = random.choice ([0,1,2]), а затем изменение других значений на основе ряда операторов IF из результата в random.choice. Спасибо еще раз за помощь.

locations = { 
1: {"name": "bedroom", 
    "msg": "There is a painting on the wall. \nThe window looks out into the garden.", 
    "char": 2, 
    "item": "matches", 
    "west": 2}, 
2: {"name": "living room", 
    "msg" : "The room is freezing cold. The fireplace is empty.", 
    "char": 1, 
    "Item": "firewood", 
    "east": 1}, 
} 

characters = { 
1: {"name": "doctor crichton", 
    "msg": "A tall, handsome archeologist home from a dig in Africa."}, 
2: {"name": "the widow", 
    "msg": "An beautiful woman with a deep air of sadness."}, 
} 
current_room = 1 

current_char = locations[current_room]["char"] 

def status(): 
    """updates player on info on current room""" 
    print("You are in the " + locations[current_room]["name"]) 
    char_status() 

def char_status(): 
    """compiles character infomation in current room""" 
    if current_char > 0: 
     char_room_info() 
    else: 
     print("\nThis room is empty.") 

def char_room_info(): 
    """NPC behavior in each room""" 
    print(characters[current_char]["name"].title() + " is in the room with you.") 

status() 
+0

'импорт случайным; random.choice (someDictionary.keys()) ' –

+0

Возможный дубликат [Как получить случайное значение в словаре python] (http://stackoverflow.com/questions/4859292/how-to-get-a-random-value в-питон-словарь) –

ответ

0

Python словари неупорядоченный, поэтому я не понимаю, почему вы хотите woulf «перетасовать» их. Если вы хотите выбрать случайные строки внутри dict, возможно, вы можете использовать список, чтобы обернуть этот словарь для простоты.

Как так:

Locations = [ {"name": "bedroom...}, {"name": "livingroom"...},...]

Я думаю, вы получите точку. Так что теперь, чтобы получить доступ к ним:

Locations[random.rand]["name"]

Также вы можете использовать это:

random.choice(locations.keys()) 

Что гораздо проще.

0

Если Python3.x затем сделать:

import random 
random.choice(list(someDictionary.keys())) 

Если Python2.x затем сделать:

import random 
random.choice(someDictionary.keys())