Match two dictionary keys efficiently in Python
This mechanism is so fragile that I can't tell for sure what it is supposed to do.  The main issue is that you can't reliably predict the order in which the keys of a dictionary will be enumerated.  For example, this seems to work as you intend:

&gt;&gt;&gt; dic1 = {u'ShutterHours': 732, u'ShieldHours': 732, u'MaskHours': 28, u'TargetHours': 790, u'GndRingHours': 25}
&gt;&gt;&gt; dic2 = {u'ShutterHours': u'Shutter Hours', u'ShieldHours': u'Shield Hours', u'MaskHours': u'Mask Hours', u'TargetHours': u'Target Hours', u'GndRingHours': u'Ground Ring Hours'}
&gt;&gt;&gt; list(zip(dic1, dic2))
[('ShutterHours', 'ShutterHours'), ('ShieldHours', 'ShieldHours'), ('GndRingHours', 'GndRingHours'), ('MaskHours', 'MaskHours'), ('TargetHours', 'TargetHours')]


However, if you insert one entry into dic2, the whole thing might fall apart:

&gt;&gt;&gt; …
&gt;&gt;&gt; dic2[''] = 'empty string'
&gt;&gt;&gt; list(zip(dic1, dic2))
[('ShutterHours', 'ShutterHours'), ('ShieldHours', ''), ('GndRingHours', 'GndRingHours'), ('MaskHours', 'ShieldHours'), ('TargetHours', 'MaskHours')]


What you probably want is a dict comprehension.

final = {dic2[k]: v for k, v in dic1.items()}


Better variable names would make the code easier to understand as well (e.g. labels instead of dic2).