Невозможно получить значение элемента в Ironpython, используйте powershell - PullRequest
0 голосов
/ 10 мая 2019

Следующий код должен получить значение элемента, но вывод пуст

[reflection.assembly]::LoadFrom("C:\Program Files\IronPython 2.7\IronPython.dll")
$py = [ironpython.hosting.python]::CreateEngine()
$pyv = $py.CreateScope()
$pyc = $py.CreateScriptSourceFromString("d = {'one':1,'two':2}")
$pyc.Execute($pyv)
$d = $pyv.GetVariable("d")
$d.one
$d.two

1 Ответ

0 голосов
/ 10 мая 2019

Вы можете использовать функцию get("key") или $variable["key"], чтобы получить значения словаря:

$engine = [ironpython.hosting.python]::CreateEngine()
$pyv = $engine.CreateScope()
$pyc = $engine.CreateScriptSourceFromString("d = {'one':1,'two':2}")
$pyc.Execute($pyv)
$d = $pyv.GetVariable("d")
$d.get("one")
$d["two"]

Это ожидаемое поведение со словарями Python , если вы попробуете get-member на объекте, то вы увидите, что свойства один и два отсутствуют, но powershell не выдаст ошибку, даже если вы попробуйте получить доступ к свойствам, которых там нет

...