将非str foo添加到dict键

时间:2015-11-07 18:31:35

标签: python dictionary

如何将[相同] 非str foo添加到字典的所有 str 键中,以便

a = {'continent': ['America', 'Africa'], 'country': ['USA', 'Egypt']}

变为:

a = {foo(bar='continent', hello=world): ['America', 'Africa'], foo(bar='country', hello=world): ['USA', 'Egypt']}

1 个答案:

答案 0 :(得分:2)

在这里,我使用字典理解来迭代dict a中的键和值,并应用函数foo定义的任何变换:

def foo(bar, hello):
    return bar + hello  # or whatever you want to do

a = {'continent': ['America', 'Africa'], 'country': ['USA', 'Egypt']}
b = {foo(bar=k, hello='world'): v for k,v in a.items()}

打印b产生:

{'continentworld': ['America', 'Africa'], 'countryworld': ['USA', 'Egypt']}

您不必在Python中使用字符串作为字典键。字典键的唯一要求是它们是可清除对象

来自Python wiki

  

要用作字典键,对象必须支持哈希函数(例如通过__hash__),相等比较(例如通过__eq____cmp__