我有以下词典:
abc = {"type":"insecure","id":"1","name":"peter"}
我想做的是根据旧的dict创建一个新的dict,其中没有键“type”,键“id”更改为“identity”。新词典将如下所示:
xyz = {"identity":"1","name":"peter"}
我提出的解决方案如下:
abc = {"type":"insecure","id":"1","name":"peter"}
xyz = {}
black_list_values = set(("type","id"))
for k in abc:
if k not in blacklist_values:
xyz[k] = abc[k]
xyz["identity"] = abc["id"]
我想知道它是否是最快捷有效的方法呢?现在,“abc”只有三个值。如果“abc”更大并且有很多值,那么我的解决方案仍然是高效和快速的。
答案 0 :(得分:4)
无论如何,您想要创建一个新词典。你可以迭代dict理解中的键/值,它更紧凑,但功能相同:
abc = {"type":"insecure","id":"1","name":"peter"}
black_list_values = set(("type","id"))
xyz = {k:v for k,v in abc.iteritems() if k not in black_list_values}
xyz["identity"] = abc["id"]
答案 1 :(得分:4)
你可以使用dict-comprehension:
abc = {"type":"insecure","id":"1","name":"peter"}
black_list = {"type"}
rename ={"id":"identity"} #use a mapping dictionary in case you want to rename multiple items
dic = {rename.get(key,key) : val for key ,val in abc.items() if key not in black_list}
print dic
<强>输出:强>
{'name': 'peter', 'identity': '1'}
答案 2 :(得分:3)
没有遍历原始字典:
abc = {"type":"insecure","id":"1","name":"peter"}
xyz = abc.copy()
xyz.pop('type')
xyz['identity'] = xyz.pop('id')
答案 3 :(得分:1)
如果所有的密钥都是预先知道的并且它是一个简短的密钥列表,那么明显的解决方案就是
xyz = {"identity":abc["id"],"name":abc["name"]}
答案 4 :(得分:1)
另一个简单的建议是使用dict()
函数:
abc = {"type":"insecure","id":"1","name":"peter"}
xyz = dict(abc)
然后以您认为合适的任何方式执行替换= - )