在python中,将一个字典值分配给另一个字典值
我有一个关于在python中将一个字典值赋给另一个字典值的问题,该值包含一些汉字在python中,将一个字典值分配给另一个字典值,python,dictionary,Python,Dictionary,我有一个关于在python中将一个字典值赋给另一个字典值的问题,该值包含一些汉字 # -*- coding: utf-8 -*- import string a = {} a['1'] = '大' # chinese character b = {} b['1'] = a['1'] print a['1'] print a print b 打印出来的是 大 {'1': '\xe5\xa4\xa7'} {'1': '\xe5\xa4\xa7'} 为什么a和a['1']之间存在差异?如何使打印
# -*- coding: utf-8 -*-
import string
a = {}
a['1'] = '大' # chinese character
b = {}
b['1'] = a['1']
print a['1']
print a
print b
打印出来的是
大
{'1': '\xe5\xa4\xa7'}
{'1': '\xe5\xa4\xa7'}
为什么a
和a['1']
之间存在差异?如何使打印成为{'1':'大'}代码>
为什么a和a['1']之间存在差异
第一个(a
)是包装在字典中的字符。当您打印字典时,Python将打印字符的原始字节(\xe5\xa4\xa7
),这是UTF-8编码。当您直接使用print a[1]
打印字符串时,Python将把这3个字节解码为各自的字符
如何使a['1']和b['1']成为大?
他们已经是一样的了,就这么做吧
print a['1']
print b['1']
添加以下类以按预期转储字典。请注意,此代码假定所有字符串都是UTF-8格式
谢谢你的回答,我能把打印成吗{'1':'大'}代码>?当然,检查更新的答案。@zhengyu是的,切换到Python 3。在它上print(a)
products{'1':'大'}
您创建了一个UTF-8字节字符串,这意味着任何repr()
输出都将使用非ASCII字节的转义序列显示。请参阅副本,其中有更详细的解释。不要打印整个字典,而是打印单个字符串值。我认为解释打印的内容将非常有用
class MyPrettyPrinter(pprint.PrettyPrinter):
def format(self, object, context, maxlevels, level):
if isinstance(object, str):
return (object.decode('utf8'), True, False)
return pprint.PrettyPrinter.format(self, object, context, maxlevels, level)
MyPrettyPrinter().pprint(a) # {1: 大}