correspondingFunctionDatabase = [
[
["Java", "System.out.println"], ["JavaScript", "console.log"], ["Python", "print"],
],
[
["Java", "s1.replaceAll(str1, str2);"], ["JavaScript", "str.replace(str1, str2)"], ["Python", "str.replace(str1, str2)"], ["Haxe", "replace(str, str1, str2)"]
],
[
["JavaScript", "str.split(separator)"], ["Java", "str.split(separator)"], ["Python", "re.split(separator, string)"]
],
[
["JavaScript", "eval(statement)"], ["Python", "eval(statement)"]
]
]
equivalenceclasses = {n: dict(map(tuple,klass)) for n,klass in enumerate(correspondingFunctionDatabase)}
bypair = {tuple(pair):n for n,klass in enumerate(correspondingFunctionDatabase) for pair in klass}
#note pep8 style name
def get_corresponding_function(targetlang, pair):
# you could catch exceptions here
return equivalenceclasses.get(bypair.get(tuple(pair))).get(targetlang)
print get_corresponding_function("Python", ["Java", "System.out.println"])
Y29ycmVzcG9uZGluZ0Z1bmN0aW9uRGF0YWJhc2UgPSBbCiAgICBbCiAgICAgICAgWyJKYXZhIiwgIlN5c3RlbS5vdXQucHJpbnRsbiJdLCBbIkphdmFTY3JpcHQiLCAiY29uc29sZS5sb2ciXSwgWyJQeXRob24iLCAicHJpbnQiXSwKICAgIF0sCiAgICBbCiAgICAgICAgWyJKYXZhIiwgInMxLnJlcGxhY2VBbGwoc3RyMSwgc3RyMik7Il0sIFsiSmF2YVNjcmlwdCIsICJzdHIucmVwbGFjZShzdHIxLCBzdHIyKSJdLCBbIlB5dGhvbiIsICJzdHIucmVwbGFjZShzdHIxLCBzdHIyKSJdLCBbIkhheGUiLCAicmVwbGFjZShzdHIsIHN0cjEsIHN0cjIpIl0KICAgIF0sCiAgICBbCiAgICAgICAgWyJKYXZhU2NyaXB0IiwgInN0ci5zcGxpdChzZXBhcmF0b3IpIl0sIFsiSmF2YSIsICJzdHIuc3BsaXQoc2VwYXJhdG9yKSJdLCBbIlB5dGhvbiIsICJyZS5zcGxpdChzZXBhcmF0b3IsIHN0cmluZykiXQogICAgXSwKICAgIFsKICAgICAgICBbIkphdmFTY3JpcHQiLCAiZXZhbChzdGF0ZW1lbnQpIl0sIFsiUHl0aG9uIiwgImV2YWwoc3RhdGVtZW50KSJdIAogICAgXQpdCgplcXVpdmFsZW5jZWNsYXNzZXMgPSB7bjogZGljdChtYXAodHVwbGUsa2xhc3MpKSBmb3IgbixrbGFzcyBpbiBlbnVtZXJhdGUoY29ycmVzcG9uZGluZ0Z1bmN0aW9uRGF0YWJhc2UpfQpieXBhaXIgPSB7dHVwbGUocGFpcik6biBmb3IgbixrbGFzcyBpbiBlbnVtZXJhdGUoY29ycmVzcG9uZGluZ0Z1bmN0aW9uRGF0YWJhc2UpIGZvciBwYWlyIGluIGtsYXNzfQoKI25vdGUgcGVwOCBzdHlsZSBuYW1lCmRlZiBnZXRfY29ycmVzcG9uZGluZ19mdW5jdGlvbih0YXJnZXRsYW5nLCBwYWlyKToKICAgICMgeW91IGNvdWxkIGNhdGNoIGV4Y2VwdGlvbnMgaGVyZQogICAgcmV0dXJuIGVxdWl2YWxlbmNlY2xhc3Nlcy5nZXQoYnlwYWlyLmdldCh0dXBsZShwYWlyKSkpLmdldCh0YXJnZXRsYW5nKQoKcHJpbnQgZ2V0X2NvcnJlc3BvbmRpbmdfZnVuY3Rpb24oIlB5dGhvbiIsIFsiSmF2YSIsICJTeXN0ZW0ub3V0LnByaW50bG4iXSk=