У меня есть проект с использованием python, и я хочу преобразовать php в python. Я запутался в массиве php в преобразовании его в python …
в старом коде php … это выглядит так,
array( "Code" => 122, "Reference" => 1311, "Type" => 'NT', "Amount" => 100.00 );
и это то, что я сделал в преобразовании его в python …
dict = { "Code":122, "Reference":1311, "Type":'NT', "Amount":100.00 }
является ли мое преобразование php в python правильным?
Ваше преобразование в основном правильное (хотя я бы не использовал dict в качестве имени переменной, так как он маскирует встроенный конструктор классов с тем же именем). При этом массивы PHP представляют собой упорядоченные сопоставления , поэтому вы должны использовать Python OrderedDict вместо обычного dict, чтобы порядок вставки сохранялся:
>>> import collections >>> od = collections.OrderedDict([ ('Code', 122), ('Reference', 1311), ('Type', 'NT'), ('Amount', 100.00), ]) >>> print od['Amount'] 100.0 >>> od.keys() ['Code', 'Reference', 'Type', 'Amount']
Конкретно, ассоциативный массив PHP такой же, как словарь Python, и ассоциативный массив PHP упорядочен . Таблицы хеша Ruby такие же, как ассоциативные массивы PHP (упорядоченные пары ключ-значение).
Списки Python и массивы PHP одинаковы (неупорядоченные списки неквалифицированных значений). Ruby-массивы такие же, как Python и PHP.
Массивы PHP отличаются от объектов py, которые:
array[] = 5
переводится в Python array.append(5)
или array[None] = 5
, Я хотел бы предоставить плагин для моего недавно выпущенного модуля pyx.php
Python. В модуле есть класс класса Python, который эмулирует массив PHP. В нашей эмуляции Python массива PHP используется переменная экземпляра OrderedDict, где array._obj является OrderedDic для хранения всех элементов массива и отслеживания их порядков вставки с использованием переменной экземпляра пользовательского указателя. Пытаться:
$ git clone https://github.com/wordpy/pyx/ $ python # or ipython` >>> import pyx.php as Php; array = Php.array >>> arr1 = array( (0,'1-0'),('a','1-a'),('b','1-b'),) >>> arr2 = array( (0,'2-0'),( 1,'2-1'),('b','2-b'),('c','2-c'),) >>> arr1 + arr2 # same as: Php.array_plus(arr1, arr2), see below >>> Php.array_merge(arr1, arr2) >>> import pyx.php as Php; array = Php.array >>> Arr0 = array() # Arr0._obj is an empty OrderedDict() >>> Arr1 = array( ('a',11), 'zzz', (99,99), 22, 33, (2,22) ) >>> Arr1 array(6) { ['a']=> <int> 11 [0]=> <str> zzz [99]=> <int> 99 [100]=> <int> 22 [101]=> <int> 33 [2]=> <int> 22 }
zip()
работает для массива с разными len !!!
>>> for i,j in zip( array(1,2,3,4), array(11,22,33) ): ... print(i,j) 1 11 2 22 3 33 >>> for i,j in zip( array(1,2), array(11,22,33) ): ... print(i,j) 1 11 2 22
array()
в pyx.php
Cython pyx.php
предлагает почти все, что предлагает массив PHP (), а также множество других методов. См. https://wordpy.com/pyx/php/ .
В настоящее время pyx.php
доступен только для Python 3.x с 64-разрядной pyx.php
Linux. Python 2.x, Mac или другие платформы могут быть скомпилированы, когда есть много запросов.