用Python在str中打印字典

时间:2015-04-12 15:10:36

标签: python

我在python上有以下字典:

dic = {1:'Ááa',2:'lol'}

如果我打印出来

print dic
{1: '\xc3\x81\xc3\xa1a', 2: 'lol'}

如何获得以下输出?

print dic
{1: 'Ááa', 2: 'lol'}  

4 个答案:

答案 0 :(得分:1)

您不能将数据结构中的字符串视为字典或列表的字符串,而不是__repr__字符串方法而不是__str__。欲了解更多信息,请阅读What is the difference between str and repr in Python

  

repr(object)

     

返回包含对象的可打印表示的字符串。

作为替代方案,您可以将项目转换为字符串并打印它们:

>>> print '{'+','.join([':'.join(map(str,k)) for k in dic.items()])+'}'
{1:Ááa,2:lol}

答案 1 :(得分:0)

如果你不介意只获取字符串,而没有括号,你可以遍历dict并自己打印出每个键值对。

from __future__ import print_function

for key, value in dict_.iteritems():
    print(key, value, sep=': ', end=',\n')

如果你打算打印一次,我会这样做,而不是建立一个字符串。如果您想要做其他事情,或多次打印,请使用Kasra's answer

如果键或值中包含冒号,逗号或换行符,并且输出不是有效的Python文字,这会让人感到困惑,但这是升级到Python 3的最简单方法。

答案 2 :(得分:0)

我不确定这是否是做你想做的最好的方法。我创建了一个类来按照您想要的方式表示数据。但是,您应该注意不再返回字典数据类型。这只是表示数据的快捷方式。第一行# -*- coding: utf-8 -*-全局指定编码类型。因此,如果您只想打印字典,这将有效。

# -*- coding: utf-8 -*-
class print_dict(object):

    def __init__(self, dictionary):
        self.mydict = dictionary

    def __str__(self):
        represented_dict = []
        for k, v in self.mydict.items():
             represented_dict.append("{0}: {1}".format(k, v))
        return "{" + ", ".join(represented_dict) + "}"





dic = {1: 'Ááa', 2: 'lol'}
print print_dict(dic)

答案 3 :(得分:0)

这在python 3中工作正常。

这是在python shell中执行时的样子。

>>> dic={1: 'Ááa',2: 'lol'}
>>> print(dic)
{1: 'Ááa', 2: 'lol'}