我希望将dict
的键替换为较短的变体,以便可以通过紧凑的形式通过线路发送。有没有办法更新密钥,而不是在dict
中创建新项目并删除旧项?
我现在在做什么:
>>> a = dict(long_key=None)
>>> a['l'] = a['long_key']
>>> del a['long_key']
我想做的是这样的事情:
>>> a = dict(long_key=None)
>>> a.update_key('long_key', 'l')
我不确定dict
的内部情况。但是,似乎update_key
之类的内容似乎可以避免需要删除旧密钥。
答案 0 :(得分:3)
更优雅的解决方案可能是创建一个新的字典...本质上是一个略有不同的浅拷贝:
a_send = dict((k[0], v) for k,v in a.items())
然而,这肯定会降低空间效率 - 您是在寻找空间效率,时间效率还是代码优雅?
答案 1 :(得分:3)
那是不成熟的优化。如果您真的想节省带宽,可以通过压缩数据normally或使用更简单的数据结构来实现。
答案 2 :(得分:1)
您需要发送多少次?也许不是改变任何东西,你可以随时处理密钥?
而不是像(猜测伪代码)那样做:
short_dict = shorten_keys(long_dict)
for k,v in short_dict:
send_over(k,v)
做类似的事情:
for k,v in long_dict:
send_over(shorten(k),v)
如果你必须多次发送,你也可以创建一个长的地图 - >短按键并在发送时使用它。浪费空间/时间来创建副本可能不是最佳解决方案。
答案 3 :(得分:0)
longer = dict(long_key=None)
mapping = dict(long_key='l')
shorter = dict((mapping[k], v) for k,v in longer.iteritems())