Yes you can. Just pass the lists itself into the dictionary instead of a string with the name of the list. Also you need to modify the call of your dictionary (see Explanation below). Try this:
dic={'key1':[A,B], 'key2': [C,D]}
col = df[dic['key1'][0][0]]
print(col)
Explanation:
Your goal is to get the dataframe column df['xx']. To get the 'xx' from the dictionary you need to get the value of the desired key in the dictionary. There was a typo in your call, as your key is a string, so you you need to write dic['key1']. This will return you the list [['xx'],['yy']] which returns 2 sublists. From this list you need to get the first sublist, which has index [0]. So, dic['key1'][0] will give you the sublist ['xx']. But as this is also a list and you actually want the first element of it, you again have to use the index [0]. Hence, the call dic['key1'][0][0] will give you the desired string 'xx'.
Remark: If A really only contains a list with one single element, I recommend not to use a list and just write A = 'xx'. You can then save the second [0] in call of the dictionary and the call of the dataframe column will be like: df[dic['key1'][0]]