我在python上有以下字典:
dic = {1:'Ááa',2:'lol'}
如果我打印出来
print dic
{1: '\xc3\x81\xc3\xa1a', 2: 'lol'}
如何获得以下输出?
print dic
{1: 'Ááa', 2: 'lol'}
答案 0 :(得分:1)
您不能将数据结构中的字符串视为字典或列表的字符串,而不是__repr__
字符串方法而不是__str__
。欲了解更多信息,请阅读What is the difference between str and repr in Python
返回包含对象的可打印表示的字符串。
作为替代方案,您可以将项目转换为字符串并打印它们:
>>> 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'}