会php和python的大神进来帮忙转换一段代码
本文介绍了会php和python的大神进来帮忙转换一段代码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
求把这段php代码转成python的代码,谢谢!
//倒序排序
function my_sort($a,$b)
{
if ($a==$b) return 0;
return ($a<$b)?1:-1;
}
$arr = array('aaa'=>5,'bbb'=>3,'ccc'=>4);
usort($arr,"my_sort");
echo json_encode($arr);
简单说就是数组倒序排序,然后转成json格式。
解决方案
PHP 中的 associative array 是一種 ordered mapping (有序映射).
這代表了 Python 中的 dictionary 並非完全相等於 associative array.
其次, json 據我所知並不支援 ordered mapping,所以如果你想要完成這項任務可能要:
使用 Python 中的有序映射對象:
OrderedDict
(請參考OrderedDict)將
OrderedDict
轉為list
再轉為json
到時候要使用該項資料時,必須從
json
中 load 進list
再轉回OrderedDict
以下是 Python3 的代碼讓你參考:
代碼:
import json
from collections import OrderedDict
# using OrderedDict
arr = {"aaa":5,"bbb":3,"ccc":4, "ddd":7}
arr = OrderedDict(sorted(arr.items(), key=lambda item: item[1], reverse=True))
# or you can create an OrderedDict directly:
# arr = OrderedDict([('aaa', 5), ('bbb', 3), ('ccc', 4), ('ddd', 7)])
print(arr)
# list
arr = list(arr.items())
print(arr)
# json dump
json_arr = json.dumps(arr)
print(json_arr)
# json load
arr = OrderedDict(json.loads(json_arr))
print(arr)
結果:
OrderedDict([('ddd', 7), ('aaa', 5), ('ccc', 4), ('bbb', 3)])
[('ddd', 7), ('aaa', 5), ('ccc', 4), ('bbb', 3)]
[["ddd", 7], ["aaa", 5], ["ccc", 4], ["bbb", 3]]
OrderedDict([('ddd', 7), ('aaa', 5), ('ccc', 4), ('bbb', 3)])
P.S. 任何不清楚的地方都歡迎用評論告訴我,我們可以再討論
这篇关于会php和python的大神进来帮忙转换一段代码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文