Как перезаписать значение во вложенном словаре с помощью оператора if else - PullRequest
0 голосов
/ 17 января 2020

У меня есть вложенный словарь, в котором я хочу хранить некоторую информацию.

d = {0: {'a': нет, 'b': нет, 'c': нет}, 1: {'a': нет, 'b': нет , 'c': Нет}, 2: {'a': Нет, 'b': Нет, 'c': Нет}}

Я хочу переписать значение 'a ',' b 'и' c 'каждый раз, когда программа получает результат.

Если значение «a» равно none, оно должно заполнять только «a», в противном случае, если «a» не равно none и «b» равно none, заполните «b», а если «a» и « b 'нет, заполните' c ', если все заполнено, сдвиньте все на передний план и заполните' c '.

Мой код выглядит так:

    a_conditon = d.get(index, {}).get('a') is None
    b_conditon = d.get(index, {}).get('b') is None
    c_conditon = d.get(index, {}).get('c') is None

    if (a_conditon):
        d.setdefault(index, {})['a']= bool(random.getrandbits(1))

    elif ((not a_conditon) and b_conditon):
        d.setdefault(index, {})['b']= bool(random.getrandbits(1))

    elif ((not a_conditon) and (not b_conditon) and c_conditon):
        d.setdefault(index, {})['c']= bool(random.getrandbits(1))

    elif ((not a_conditon) and (not b_conditon) and (not c_conditon)):
        d.setdefault(index, {})['a']= d.get(index, {}).get('b')
        d.setdefault(index, {})['b']= d.get(index, {}).get('c')
        d.setdefault(index, {})['c']= bool(random.getrandbits(1))

Тем не менее, я получил это сразу, заполните все 3 записи. Может ли кто-нибудь помочь мне указать на это? Я не уверен, где это go неправильно

1 Ответ

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

Я опробовал код, основанный на логике c, как описано вами, и поместил его в al oop для значений индекса 0,1,2. Кажется, для меня это нормально работает. Можете ли вы проверить l oop и что проверки состояния a_condition, b_condition и c_condition оцениваются каждый раз в l oop? Кроме того, в примере есть 2 цикла:

  1. Внешний l oop перебирает значения индекса
  2. Внутренний l oop выполняет итерацию 4 раза для запуска 4 состояния

Например, в первом l oop для значения индекса 0 выполняется первое состояние для получения вывода {0: {'a': True, 'b': None, 'c': None}, 1: {'a': None, 'b': None, 'c': None}, 2: {'a': None, 'b': None, 'c': None}}, за которым следует следующее состояние {0: {'a': True, 'b': False, 'c': None}, 1: {'a': None, 'b': None, 'c': None}, 2: {'a': None, 'b': None, 'c': None}}

Вот код и вывод по желанию.

while(index <=2):
    count = 3
    while(count>=0):
        a_conditon = d.get(index, {}).get('a') is None
        b_conditon = d.get(index, {}).get('b') is None
        c_conditon = d.get(index, {}).get('c') is None

        if (a_conditon):
            d.setdefault(index, {})['a']= bool(random.getrandbits(1))

        elif ((not a_conditon) and b_conditon):
            d.setdefault(index, {})['b']= bool(random.getrandbits(1))

        elif ((not a_conditon) and (not b_conditon) and c_conditon):
            d.setdefault(index, {})['c']= bool(random.getrandbits(1))

        elif ((not a_conditon) and (not b_conditon) and (not c_conditon)):
            d.setdefault(index, {})['a']= d.get(index, {}).get('b')
            d.setdefault(index, {})['b']= d.get(index, {}).get('c')
            d.setdefault(index, {})['c']= bool(random.getrandbits(1))
        print(d)
        count -=1
    index += 1

Вывод при работе для значений индекса 0,1,2

{0: {'a': True, 'b': None, 'c': None}, 1: {'a': None, 'b': None, 'c': None}, 2: {'a': None, 'b': None, 'c': None}}
{0: {'a': True, 'b': False, 'c': None}, 1: {'a': None, 'b': None, 'c': None}, 2: {'a': None, 'b': None, 'c': None}}
{0: {'a': True, 'b': False, 'c': True}, 1: {'a': None, 'b': None, 'c': None}, 2: {'a': None, 'b': None, 'c': None}}
{0: {'a': False, 'b': True, 'c': False}, 1: {'a': None, 'b': None, 'c': None}, 2: {'a': None, 'b': None, 'c': None}}
{0: {'a': False, 'b': True, 'c': False}, 1: {'a': False, 'b': None, 'c': None}, 2: {'a': None, 'b': None, 'c': None}}
{0: {'a': False, 'b': True, 'c': False}, 1: {'a': False, 'b': False, 'c': None}, 2: {'a': None, 'b': None, 'c': None}}
{0: {'a': False, 'b': True, 'c': False}, 1: {'a': False, 'b': False, 'c': True}, 2: {'a': None, 'b': None, 'c': None}}
{0: {'a': False, 'b': True, 'c': False}, 1: {'a': False, 'b': True, 'c': False}, 2: {'a': None, 'b': None, 'c': None}}
{0: {'a': False, 'b': True, 'c': False}, 1: {'a': False, 'b': True, 'c': False}, 2: {'a': True, 'b': None, 'c': None}}
{0: {'a': False, 'b': True, 'c': False}, 1: {'a': False, 'b': True, 'c': False}, 2: {'a': True, 'b': False, 'c': None}}
{0: {'a': False, 'b': True, 'c': False}, 1: {'a': False, 'b': True, 'c': False}, 2: {'a': True, 'b': False, 'c': False}}
{0: {'a': False, 'b': True, 'c': False}, 1: {'a': False, 'b': True, 'c': False}, 2: {'a': False, 'b': False, 'c': True}}
...