Readability concerns with literal dictionary lookup vs if-else I'm having concerns about the readability of this piece of code:
    messages_dict = {'error':errors, 'warning':warnings}[severity]
    messages_dict[field_key] = message

and I'm to use this instead:
    if severity == 'error':
        messages_dict = errors
    elif severity == 'warning':
        messages_dict = warnings
    else:
        raise ValueError('Incorrect severity value')
    messages_dict[field_key] = message

But it looks too verbose for such a simple thing.
I don't care too much if it's more efficient than constructing a dictionary for just two mappings. Readability and maintainability is my biggest concern here (errors and warnings are method arguments, so I cannot build the lookup dictionary beforehand and reuse it later).
Since you mention maintainability I think that the consideration can be taken in terms of what next changes may look like. If further changes will take more statements to be executed with the result of one of those specific options, or if more options will be added, I would stick to the dictionary approach.

Looking into the future can certainly be tricky, but you need to also think how much will the code need to be change to assert a specific new need. If you need to add a new level of reporting, would you prefer to add a new else if or just a value in a dictionary?

Readability then starts to backfire, since if ... else is quite common. What happens when you arrive at 3, 4 or 5 branches?