gpt4 book ai didi

Python 强制 dict 条目为 utf-8

转载 作者:行者123 更新时间:2023-11-28 16:48:38 32 4
gpt4 key购买 nike

我花了一个下午的大部分时间尝试将字典对象修补为 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

改进以下任何一项的建议将非常有帮助:

  • 表现
  • 涵盖更多边缘案例
  • 错误处理

最佳答案

我同意评论说这可能被误导了。也就是说,您当前的方案存在一些漏洞:

  1. d.setdefault 可用于将 unicode 对象添加到您的字典中:

    >>> d = UTF8Dict()
    >>> d.setdefault(u'x', u'y')
  2. d.update 可用于将 unicode 对象添加到您的字典中:

    >>> d = UTF8Dict()
    >>> d.update({u'x': u'y'})
  3. 可以使用任何标准列表操作修改字典中包含的列表值以包含 unicode 对象。例如:

    >>> d = UTF8Dict(x=[])
    >>> d['x'].append(u'x')

为什么您要确保您的数据结构仅包含 utf-8 字符串?

关于Python 强制 dict 条目为 utf-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10760609/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com