[英]Mapping Python Dict keys to another Dict
由於計划不周,我有一個腳本期望帶有某些鍵的python dict,但是創建此dict的另一個腳本使用的是不同的命名約定。
不幸的是,由於已經進行了翻譯,因此我似乎需要轉換dict鍵。
基本上從
{'oldKey':'data'}
至
{'newKey':'data'}
我當時想創建一個字典:
{'oldKey':'newKey'}
並遍歷字典,將oldKey轉換為newKey,但這是最有效/最有效的方法嗎?
我可以想到使用字典的幾種方法,但是其中一種方法可能會更有效,具體取決於鍵用法的范圍。
a)具有字典理解能力:
old_dict = {'oldkey1': 'val1', 'oldkey2': 'val2',
'oldkey3': 'val3', 'oldkey4': 'val4',
'oldkey5': 'val5'}
key_map = {'oldkey1': 'newkey1', 'oldkey2': 'newkey2',
'oldkey3': 'newkey3', 'oldkey4': 'newkey4',
'oldkey5': 'newkey5'}
new_dict = {newkey: old_dict[oldkey] for (oldkey, newkey) in key_map.iteritems()}
print new_dict['newkey1']
b)使用一個簡單的類進行映射。 (請注意,在此示例中,我已在key_map
中切換了鍵/值的順序。)這可能會更有效,因為它將使用惰性評估-無需遍歷所有鍵-如果不是所有鍵都可以節省時間用過的。
class DictMap(object):
def __init__(self, key_map, old_dict):
self.key_map = key_map
self.old_dict = old_dict
def __getitem__(self, key):
return self.old_dict[self.key_map[key]]
key_map = {'newkey1': 'oldkey1',
'newkey2': 'oldkey2',
'newkey3': 'oldkey3',
'newkey4': 'oldkey4',
'newkey5': 'oldkey5'}
new_dict2 = DictMap(key_map, old_dict)
print new_dict2['newkey1']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.