在Python字典中访问Unicode值

3

我有一个充满Unicode键/值的字典,因为通过json.loads()导入JSON。

dictionaryName = {u'keyName' : u'valueName'}

我正在尝试按以下方式访问字典中的值:
accessValueName = dictionaryName.get('keyName')

这会返回None,可能是因为它正在寻找字符串'keyName',而列表中充满了Unicode值。我尝试在调用时在我的keyName前面加上'u',但它仍然返回none。

accessValueName = dictionaryName.get(u'keyName')

我还发现了几种似乎已经过时的方法,可以将整个字典转换为字符串值而不是Unicode,但是它们没有起作用,而且我也不确定是否需要将整个字典转换。
如何将整个字典从Unicode转换为String或者只使用键名访问值?
编辑:
我刚刚意识到我正在尝试访问一个嵌套字典中的值,我没有注意到它是嵌套的。
解决方案确实是:
accessValueName = dictionaryName.get('keyName')

2
accessValueName = dictionaryName.get('keyName') should work just fine, with or without u - rafaelc
可能是 https://dev59.com/h2Af5IYBdhLWcg3wizOu 的重复问题。 - user3483203
1个回答

1
字典使用对象的哈希值在哈希表中存储值。
print(hash(u"example"))
print(hash("example"))

产生相同的结果。因此,两者都应该能够访问相同的字典值。

OP刚刚编辑了一下,说明这是一个无法重现的错误 ;) - rafaelc
@RafaelC 刚刚看到了,如果有人后来阅读标题并需要这样的知识,我在这里留下答案。 - Rockybilly
然而,两个不同的值可以具有相同的哈希。如果您正在使用Python 3,则u'example''example'是相同Unicode字符串的两种语法。在Python 2中,类型是不同的,但ASCII字节字符串和ASCII Unicode字符串恰好具有相同的哈希,并且Python将隐式地从一个转换为另一个进行比较。Python 3不会这样做。 - Mark Tolonen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接