python字典上spark2提交的意外自动排序
使用“spark2提交”时Python dict上出现意外排序行为 [tmp.py]python字典上spark2提交的意外自动排序,python,pyspark-sql,Python,Pyspark Sql,使用“spark2提交”时Python dict上出现意外排序行为 [tmp.py] d = { 'name': 'stackoverflow', 'email': 'atack@xxx.com', 'zip': '628888', } print(d) 期望值: { 'name': 'stackoverflow', 'email': 'atack@xxx.com', 'zip': '628888', } 实际值: { 'name':
d = {
'name': 'stackoverflow',
'email': 'atack@xxx.com',
'zip': '628888',
}
print(d)
期望值:
{
'name': 'stackoverflow',
'email': 'atack@xxx.com',
'zip': '628888',
}
实际值:
{
'name': 'stackoverflow',
'email': 'atack@xxx.com',
'zip': '628888',
}
-bash-4.1$spark2提交tmp.py
{'name': 'stackoverflow', 'zip': '628888', 'email': 'atack@xxx.com'}
19/08/08 09:33:35 INFO util.ShutdownHookManager: Shutdown hook called
19/08/08 09:33:35 INFO util.ShutdownHookManager: Deleting directory /tmp/spark-9bb6bd82-ba2c-4715-b27a-6fdc41d3297b
-bash-4.1$
我无法使用“python或python3tmp.py”命令。这是个大故事。请忽略这一点。Python或Python3的方式,它的工作非常完美。我想通过spark2提交的方式使其正常工作
怀疑,根据实际结果:
电子邮件应位于顶部)
628888
应该位于顶部谢谢,在python中,
dict
键没有定义的排序顺序。您可以使用OrderedICT来维护密钥顺序:
例如:
import collections
orderedDict = collections.OrderedDict()
orderedDict['name'] = 'stackoverflow'
orderedDict['email'] = 'atack@xxx.com'
orderedDict['zip'] = '628888'
print(orderedDict)
注意:
从Python3.7+开始,dict实际上保持了它们的键插入顺序。