Rather than using Custom Object you can leverage Custom Metadata types.
In the standard page layout, you cannot directly assign third picklist value.
It is could be better you can handle this through trigger (before insert or before update).
I could be also suggest you to leverage Platform Cache where you can cache the mapping and retrieve the third picklist value based on 1st and 2nd.
Logic is:
During first time assignment, check value is exist in the Cache and if not exists, then prepare values in the Cache. And next time onwards read of the Cache.
Note: You cannot put special character or space as a key in Cache.
This code might help you.
public static String getThirdPicklistValue(String firstPicklist,String SecondPicklist)
{
String thirdPicklist = (String)Cache.Org.get(firstPicklist.replaceSpecialChars() + SecondPicklist.replaceSpecialChars());
if(thirdPicklist ==null)
{
for(Case_Type_Mapping__mdt mdt: [SELECT FirstPicklist__c,SecondPicklist__c,
ThirdPicklist__c
FROM Picklist_Mapping__mdt])
{
if(mdt.FirstPicklist__c !=null && mdt.SecondPicklist__c != null && mdt.ThirdPicklist__c != null)
{
Cache.Org.put(mdt.FirstPicklist__c.replaceSpecialChars() + mdt.SecondPicklist__c.replaceSpecialChars(), mdt.ThirdPicklist__c);
}
}
}
return thirdPicklist = (String)Cache.Org.get(firstPicklist.replaceSpecialChars() + SecondPicklist.replaceSpecialChars())
}
public static String replaceSpecialChars(String str)
{
return str.replace(' ','').replace('(','').replace(')','').replace('-','').replace('/','').replace('+','').replace('_','');
}
For more information, refer Platform Cache Docs and Platform Cache Basics Trailhead