嗨我正在尝试做Python的简单任务,无论字典的键是否相等.这是我的示例代码
loc = {'latitude' :-90.0, 'longitude' : -180.0, 'timestamp': 1512531206, 'name': "SNU", 'keywords':["school, hard"],}
Run Code Online (Sandbox Code Playgroud)
这是我的示例数据.如果我打印出loc的关键值,那么我得到......
print(loc.keys())
Run Code Online (Sandbox Code Playgroud)
打印:dict_keys(['纬度','经度','时间戳','名称','关键字'])
所以我想做的是检查数据是否与字典的密钥相同.我用它但它根本不起作用....
print(loc.keys() == ['latitude', 'longitude', 'timestamp', 'name', 'keywords'])
Run Code Online (Sandbox Code Playgroud)
这仍然让我失败.有没有其他方法可以让我变成虚假的?
字典是无序的数据结构,并dict.keys()返回一个View对象,而不是一个列表,因此键与列表的简单比较将不起作用.幸运的是,View对象是类似于set的,您可以对它使用set操作.例如,
loc = {
'latitude' :-90.0, 'longitude' : -180.0, 'timestamp': 1512531206,
'name': "SNU", 'keywords':["school, hard"],
}
print(loc.keys() == {'latitude', 'longitude', 'timestamp', 'name', 'keywords'})
Run Code Online (Sandbox Code Playgroud)
产量
True
Run Code Online (Sandbox Code Playgroud)
在CPython 3.6+ dicts中确实保留了插入顺序,但这是一个实现细节,我们不应该依赖它.但除此之外,dict的项目可能已经以任何顺序插入,因此假设密钥将按特定顺序排列并不是一个好主意.