我四处搜索并尝试对字符串进行 .encode(...) 编码,但我无法想象这个问题会像看起来那样严重。
我有两个数据结构,一个是从 YAML 文件加载的,另一个是从 JSON 文件加载的。
两个内容都已处理(我正在迭代数据):
YAML 字典
[{'SynID': 66, 'action': 'userInit', 'appLocation': 0},
{'SynID': 66, 'action': 'isEngager', 'appLocation': 0}]
JSON字典
{u'name': u'SynID', u'value': u'66'}
...
{u'name': u'action', u'value': u'isEngager'}
最后,在进行比较时,任何涉及整数(非字符串)的操作都会失败。例如:
if uriDict['name'] in expectedResultsSubDict and uriDict['value'] == expectedResultsSubDict[uriDict['name']]:
Logger().l("[%s] Match: %s:%s == %s" % (pos, uriDict['name'], uriDict['value'], expectedResultsSubDict[uriDict['name']]))
elif uriDict['name'] in expectedResultsSubDict:
Logger().l("[%s] Name: %s, value: %s" % (pos, uriDict['name'], uriDict['value']))
第一个 if 语句无法匹配 SynID:66 的键/值,但会匹配第二个条目 action:isEngager。
2013-01-28 12:48:42,151 : DEBUG : [0] Name: SynID, value: 66
2013-01-28 12:48:42,151 : DEBUG : [0] Match: action:userInit == userInit
正如您在输出中看到的,它与 SynID 不匹配,但与操作匹配。
如果我在这一行中添加:
elif uriDict['name'] in expectedResultsSubDict and int(uriDict['value']) == int(expectedResultsSubDict[uriDict['name']]):
Logger().l("[%s] Int Match: %s:%s == %s" % (pos, uriDict['name'], uriDict['value'], expectedResultsSubDict[uriDict['name']]))
它将在 SynID(和其他具有整数的字段)上正常工作,但在字符串字段上失败。我还尝试将 '==' 比较更改为 'is',在这种情况下,没有任何匹配项。
问)我如何比较我的字典的值?