Access Ironpython dictionary from C#
c#-4.0, ironpython
Solution
This works:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Scripting.Hosting;
using Microsoft.Scripting.Utils;
using Microsoft.Scripting.Runtime;
using IronPython;
using IronPython.Hosting;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
ScriptEngine pyEngine = Python.CreateEngine();
ScriptScope pyScope = pyEngine.CreateScope();
ScriptSource pyScript = pyEngine.CreateScriptSourceFromString("d = {'a':1,'b':2,'c':3}");
CompiledCode pyCompiled = pyScript.Compile();
pyCompiled.Execute(pyScope);
IronPython.Runtime.PythonDictionary d = pyScope.GetVariable("d");
Console.WriteLine(d.get("a"));
Console.Read();
}
}
}
Should give you the first value for key 'a'. Hope this gets you going. Possibly there are one or two includes too many.
Problem
I have dictionary defined in Ironpython script and I want to access this dictionary from my C# code. Can someone provide example code to achieve my requirement. Sorry earlier I did not mention my problem statement with code. ``` import clr clr.AddReference("System.Core") import System clr.ImportExtensions(System.Linq) from System.Collections.Generic import Dictionary,List def check(self): dict1 = Dictionary[str,str] dict1["a"] = "aa" dict2 = Dictionary[str,str] dict2["b"] = "bb" self[0] = dict1 # self.Add(dict1) return self ``` C# ``` var runtime = Python.CreateRuntime(); dynamic test = runtime.UseFile("Test.py"); var myDictList = new List<Dictionary<string, string>>(); var myDL = new List<Dictionary<string, string>>(); myDL = test.check(myDictList); ``` My objective is to operate(Add, remove from list) on List of Dictionary in python and send it back to C# where I can use it further. What I want is either create a list of dictionary in python or in C# and use it in both( python and C#) the places. How can I do so.