Python强制dict条目为utf-8
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python强制dict条目为utf-8,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1568字,纯文字阅读大概需要3分钟。
内容图文
![Python强制dict条目为utf-8](/upload/InfoBanner/zyjiaocheng/656/b99e220420da42ef9e7facac6a36ef42.jpg)
我花了一个下午的大部分时间来尝试修补字典对象以utf-8编码代替unicode.我试图找到扩展词典对象的最快,性能最好的方法,并确保其条目,键和值均为utf-8.
这是我想出的,它可以完成工作,但是我想知道可以进行哪些改进.
class UTF8Dict(dict):
def __init__(self, *args, **kwargs):
d = dict(*args, **kwargs)
d = _decode_dict(d)
super(UTF8Dict,self).__init__(d)
def __setitem__(self,key,value):
if isinstance(key,unicode):
key = key.encode('utf-8')
if isinstance(value,unicode):
value = value.encode('utf-8')
return super(UTF8Dict,self).__setitem__(key,value)
def _decode_list(data):
rv = []
for item in data:
if isinstance(item, unicode):
item = item.encode('utf-8')
elif isinstance(item, list):
item = _decode_list(item)
elif isinstance(item, dict):
item = _decode_dict(item)
rv.append(item)
return rv
def _decode_dict(data):
rv = {}
for key, value in data.iteritems():
if isinstance(key, unicode):
key = key.encode('utf-8')
if isinstance(value, unicode):
value = value.encode('utf-8')
elif isinstance(value, list):
value = _decode_list(value)
elif isinstance(value, dict):
value = _decode_dict(value)
rv[key] = value
return rv
改善以下任何一项的建议将非常有帮助:
>表现
>涵盖更多的边缘情况
>错误处理
解决方法:
我同意那些可能会被误导的评论.也就是说,这是您当前方案中的一些漏洞:
> d.setdefault可用于将unicode对象添加到您的字典中:
>>> d = UTF8Dict()
>>> d.setdefault(u'x', u'y')
> d.update可用于将unicode对象添加到您的字典中:
>>> d = UTF8Dict()
>>> d.update({u'x': u'y'})
>可以使用任何标准列表操作将字典中包含的列表值修改为包括unicode对象.例如.:
>>> d = UTF8Dict(x=[])
>>> d['x'].append(u'x')
为什么要确保您的数据结构仅包含utf-8字符串?
内容总结
以上是互联网集市为您收集整理的Python强制dict条目为utf-8全部内容,希望文章能够帮你解决Python强制dict条目为utf-8所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。