Форум сайта python.su
Я не программист. Немного знаю Delphi и Pascal. Хочу решить следующую задачу. Мне нужно автоматизировать процесс в браузерной игре. Для этого, я составил небольшую таблицу со списком команд, временем выполнения и номером объекта для применения команды. Типа такой:
--------------
i | t | o | a
0 | 1 | 2 | 1
1 | 5 | 2 | 2
2 | 7 | 3 | 1
type
myRec=record
cTime:integer;
cObj:integer;
cAction:integer;
end;
const
cList:array [0..2] of myRec=
((cTime:1;cObj:2;cAction:1),
(cTime:5;cObj:2;cAction:2),
(cTime:7;cObj:3;cAction:1));
begin
cTimer:=0;
for i:=0 to 2 do
begin
while true do
begin
if cList[i].cTime>cTimer
then
doAction(cList[i].cObj,cList[i].cAction);
break;
end; //while
doSomeChecking;
cTimer:=GetNewTime;
end; //for
cList={[(cTime:1;cObj:2;cAction:1], [cTime:5;cObj:2;cAction:2], [cTime:7;cObj:3;cAction:1]};
Отредактировано Newbie_II (Июнь 6, 2016 11:49:09)
Офлайн
Вам совершенно не обязательно хранить в словаре ключи и значения в определенном порядке! Достаточно в определенном порядке их опрашивать.
Кроме того для питона есть и словари - можете погуглить
Офлайн
Newbie_II
Вроде массивов в пайтоне нет?
ZerGНаверное имелось ввиду в пайтоне и массивы есть
есть и словари
Офлайн
ZerGи что же может задать этот порядок опроса? Как мне из словаря вытащить, например, 5-ю по счету запись?
… Достаточно в определенном порядке их опрашивать. …
Офлайн
В словаре нет “пятой по счету записи”. Считайте словарь хешируемой таблицей где нет позиции, а есть просто ключ-значение. Если Вы хотите хранить позиционно и при этом использовать доступ по ключам то есть 2 варианта:
1. Написать свой класс, который был бы наследником dict, но при этом хранил еще последовательность элементов.
2. Расширить ordereddict (модель collections) добавив к нему методы для работы по индексам.
Офлайн
А что мешает мам далеть так как вы написали:
Newbie_II
нужно идти подряд по списку и выполнять эти комманды
i =0; t=1;o =2;a=3 cmd= [[0 , 1 , 2 , 1], [0 , 1 , 2 , 1], [0 , 1 , 2 , 1]] for j in cmd: print(j[a])
class Ta: def __init__(self,li): self.i,self.j,self.k,self.y=li cmd=map(Ta, [[0 , 1 , 2 , 1], [0 , 1 , 2 , 1], [0 , 1 , 2 , 1]]) for j in cmd: print(j.a)
Отредактировано doza_and (Июнь 7, 2016 09:16:57)
Офлайн
arr = { 0: {'i': 10, 't': 20, 'o': 30, 'a': 40}, 1: {'i': 100, 't': 200, 'o': 300, 'a': 400} } print arr[0] # {'i': 10, 'a': 40, 't': 20, 'o': 30} print arr[0]['i'] # 10 print arr[0]['t'] # 20
Офлайн