我有一本字典
dict = {'a': 'cat', 'b':'dog'}
我想替换dict中的键
使用列表['c', 'd']
中的新键(或键标签),以便得到(相同)
dict = {'c': 'cat', 'd':'dog'}
。我怎么能这样做?
答案 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)