Распределять стоимость в зависимости от начальных списков

В следующем коде мы имеем:

соединения попарно: переменная, которая стремится к тому, чтобы представить пары игроков. В примере, игрок 1 играет с игроком 2 и игрок 3 играет с игроком 4.

V1, V2, V3, V4: это варианты или символы, которые игроки показывают Вашим оппонентам в паре.

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

Поскольку возможно подтверждать, код функционирует, но мне хотелось бы хранить сигналы более элегантного и работоспособного способа. А именно, он мне понравился бы, что, обменявшись стоимостью (игроками) в начальных списках (например, меняться в ([[1,3],[2,4]]), программа хранила правильно сигналы, которые каждый игрок наблюдал. А именно, что мемуары игроков сохраняла всегда сигнал, который есть, я следую распределенная за Вашей парой в начальном списке. Который, если игрок играет 1 с 2, я хранил в Вашем словаре V2, который, если он играет с 3, я хранил V3, и который, если он играет с 4, я хранил V4.

emparejamientos= ([[1,2],[3,4]])

V1="V1"
V2="V2"
V3="V3"
V4="V4"

Senal_observada1 = {"V1":0,"V2":0,"V3":0,"V4":0}
Senal_observada2 = {"V1":0,"V2":0,"V3":0,"V4":0} 
Senal_observada3 = {"V1":0,"V2":0,"V3":0,"V4":0}
Senal_observada4 = {"V1":0,"V2":0,"V3":0,"V4":0} 

#Almacén de senales observadas en la memoria
if emparejamientos[0]==[1,2]:
     Senal_observada1[V2] +=1
     Senal_observada2[V1] +=1

if emparejamientos[1]==[3,4]:
     Senal_observada3[V4] += 1
     Senal_observada4[V3] += 1
1
задан 01.01.2017, 21:14
0 ответов

Если я понимаю хорошо то, что ты хочешь сделать, он стоил бы тебе несмотря на то, что хранил бы все сигналы в единственном словаре, в котором ключ - пара (игрок, сигнал).

И сохранять символ, показанный каждым игроком в списке, где первое положение - jugador1, вторая jugador2, и т.д.:

emparejamientos= [(1,2), (3,4)]

# Simbolos mostrados por cada jugador
simbolo = [V1, V2, V3, V4]

# Almacen de señales vistas
senales = {
    (1, V1):0, (1, V2):0, (1, V3):0, (1, V4):0,
    (2, V1):0, (2, V2):0, (2, V3):0, (2, V4):0,
    (3, V1):0, (3, V2):0, (3, V3):0, (3, V4):0,
    (4, V1):0, (4, V2):0, (4, V3):0, (4, V4):0 }

#Almacenar para jugador las señales mostradas por el otro
for jugador1, jugador2 in emparejamientos:
    senales[(jugador1, simbolo(jugador2))] += 1
    senales[(jugador2, simbolo(jugador1))] += 1

В действительности ты даже не нуждаешься в том, чтобы инициализировать словарь:

from collections import defaultdict
....
senales = defaultdict(int)
....

Но а следовательно я видел в этом вопросе и предыдущей другой, что deberías делать для того, чтобы твой код был читабельнее, значит отделять это в функциях.

1
ответ дан 03.12.2019, 17:54

Теги

Похожие вопросы