将一个字典值分配给python中的另一个字典值

时间:2016-01-16 17:44:32

标签: 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'}

为什么aa['1']之间存在差异?如何print a成为{'1': '大'}

1 个答案:

答案 0 :(得分:1)

  

为什么a和['1']之间存在差异?

第一个(a)是你的字符包裹在字典中。当您打印字典时,Python将打印字符(\xe5\xa4\xa7)的原始字节,这是UTF-8编码。当您使用print a[1]直接打印字符串时,Python会将这3个字节解码为各自的字符。

  

如何使['1']和b ['1']成为大?

它们已经是一样的了。只是做

print a['1']
print b['1']

添加以下类以按预期转储字典。请注意,此代码假定您的所有字符串都采用UTF-8格式

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: 大}