我想用ASCII编码列表。
我的清单:
countDuplicates :: (Eq a) => [a] -> [a] -> Int
countDuplicates [] b = 0
countDuplicates (x:rest) b =
let myElem a [] = False
myElem a (al:lst) = if a == al then True else myElem a lst
index = if x `myElem` b then 1 else 0
in index + countDuplicates rest b
我的目标:
data = {u'ismaster': True, u'maxWriteBatchSize': 1000, u'ok': 1.0, u'maxWireVersion': 3, u'minWireVersion': 0}
目前我这样做:
data = {'ismaster': True, 'maxWriteBatchSize': 1000, 'ok': 1.0, 'maxWireVersion': 3, 'minWireVersion': 0}
请参阅Website to convert a list of strings
我用这种方法丢失了一些值。
答案 0 :(得分:4)
这是因为您要转换为实际列表,但您最初有一本字典。就这样做:
data = {key.encode("ascii"): value for key, value in data.items()}
您使用的是list comprehension,但您想要的是dict理解。
答案 1 :(得分:0)
' u'在字符串值前面表示该字符串已表示为unicode。这是一种表示比普通ASCII更多字符的方法。
如果您的词典包含特殊字符,您将遇到问题
strangeKey = u'Ознакомьтесь с документацией'
表示为u'\u041e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439'
asciirep = strangeKey.encode("ascii")
会引发此错误
SyntaxError: Non-ASCII character '\xd0' in ...
如果你仍然想要它,但有可能会引发一些例外,你可以使用以下
从Python 2.7和3开始,您可以直接使用dict理解语法:
d = {key.encode("ascii"): value for (key, value) in data.items()}
在Python 2.6及更早版本中,您需要使用dict构造函数:
d = dict((key.encode("ascii"), value) for (key, value) in data.items())