如何从标记列表中替换字典中的键(键标签)

时间:2014-01-19 17:32:19

标签: python list dictionary replace key

我有一本字典

dict = {'a': 'cat', 'b':'dog'}

我想替换dict中的键 使用列表['c', 'd']中的新键(或键标签),以便得到(相同)

dict = {'c': 'cat', 'd':'dog'}。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

您可以在另一个字典中定义旧密钥及其替换之间的关系,如下所示。这里,mapping是将旧密钥映射到新密钥的字典。

d, mapping = {'a': 'cat', 'b':'dog'}, {"a":"c", "b":"d"}
print {mapping[k]:v for k, v in d.items()}

<强>输出

{'c': 'cat', 'd': 'dog'}

答案 1 :(得分:0)

正如已经指出的那样,字典不是有序的。因此,如果要使用列表中的值(已订购)替换键,则需要指定dict键的排序方式。这些方面的东西:

def replaceKeys (d, newKeys, sort):
    return {newKeys[idx]: v for idx, (_, v)
        in enumerate(sorted(d.items(), key = lambda kv: sort(kv[0])))}

d = {'cat': 'gato', 'dog': 'chucho', 'mule': 'mula'}
d2 = replaceKeys(d, ['a', 'b', 'c'], lambda oldKey: oldKey) #sort alphabetically
print(d2)
d2 = replaceKeys(d, ['a', 'b', 'c'], lambda oldKey: -len(oldKey)) #sort by length ascending
print(d2)
d2 = replaceKeys(d, ['a', 'b', 'c'], lambda oldKey: oldKey[2]) #sort by third letter
print(d2)