我正在从一个代码“层”收到命令,对该命令进行一些计算/修改,然后再将其传递到另一个“层”。原始dict的键和“字符串”值是unicode
,但是将它们传递到的层只接受str
。
这将经常被调用,所以我想知道什么是最快的转换方法:
{ u'spam': u'eggs', u'foo': True, u'bar': { u'baz': 97 } }
…至:
{ 'spam': 'eggs', 'foo': True, 'bar': { 'baz': 97 } }
……请记住,非“字符串”值必须保持其原始类型。
有什么想法吗?
DATA = { u'spam': u'eggs', u'foo': frozenset([u'Gah!']), u'bar': { u'baz': 97 },
u'list': [u'list', (True, u'Maybe'), set([u'and', u'a', u'set', 1])]}
def convert(data):
if isinstance(data, basestring):
return str(data)
elif isinstance(data, collections.Mapping):
return dict(map(convert, data.iteritems()))
elif isinstance(data, collections.Iterable):
return type(data)(map(convert, data))
else:
return data
print DATA
print convert(DATA)
# Prints:
# {u'list': [u'list', (True, u'Maybe'), set([u'and', u'a', u'set', 1])], u'foo': frozenset([u'Gah!']), u'bar': {u'baz': 97}, u'spam': u'eggs'}
# {'bar': {'baz': 97}, 'foo': frozenset(['Gah!']), 'list': ['list', (True, 'Maybe'), set(['and', 'a', 'set', 1])], 'spam': 'eggs'}
假设:
data.encode('utf-8')
而不是str(data)
)。如果您需要支持其他容器类型,希望可以很明显地遵循该模式并为其添加案例。
问题内容: 我是使用subprocess.Popen()从进程的输出中获得的: 对我来说,它似乎不是有效的json。我已经使用和,但是没有运气。有人可以在正确的方向帮助我吗?提前致谢。 问题答案: 确实,导出ECMA脚本而不是JSON的旧版本。根据此debian错误报告,升级1.4.8应该会给您适当的JSON。另请参阅项目CHANGELOG: 现在,通过正确引用xport的键,xport的JSON
问题内容: 我有一个带有多列的pandas数据框,我想从两列构造一个dict:一个作为dict的键,另一个作为dict的值。我怎样才能做到这一点? 数据框: 我需要将区域定义为键,在dict中计为值。先感谢您。 问题答案: 如果是您,则可以执行以下操作
问题内容: 我在上课时遇到了麻烦。我在Raspbian(Raspberry Pi的Debian发行版)上使用Python 2.7。我正在尝试打印两个字典,以便进行文本冒险的比较(并排)。该顺序对于准确比较至关重要。无论我尝试什么,词典都以通常的无序方式打印。 这是我在RPi上执行的操作所得到的: 显然有些不对劲,因为它正在打印函数调用并将键和值组放入嵌套列表中。 这是通过在PC上运行类似内容得到的
问题内容: 我正在创建一个与opencv共享视频的系统,但是我遇到了问题。我有一个服务器和一个客户端,但是当我向服务器发送信息时,必须为字节。我发送两件事: ret是一个booland框架,是数据视频,一个numpy.ndarray ret没问题,但是是框架:我先将其转换为字符串,然后转换为字节: 我现在想再次在numpy.ndarray中转换帧。 问题答案: 你错了 如果将其打印到终端,则会发现
问题内容: 有什么好的工具可以在Java中快速轻松地将XML转换为JSON? 问题答案: Java中的 JSON有一些很棒的资源。 Maven依赖项: XML.java 是您要寻找的课程: 输出为:
问题内容: 有一个对象,是否有比列表理解更快,更好或更正确的方法来获取迭代器返回的对象的列表? 问题答案: