当前位置:Gxlcms > PHP教程 > 会php和python的大神进来帮忙转换一段代码

会php和python的大神进来帮忙转换一段代码

时间:2021-07-01 10:21:17 帮助过:30人阅读

求把这段php代码转成python的代码,谢谢!

  1. <code>//倒序排序
  2. function my_sort($a,$b)
  3. {
  4. if ($a==$b) return 0;
  5. return ($a<$b)?1:-1;
  6. }
  7. $arr = array('aaa'=>5,'bbb'=>3,'ccc'=>4);
  8. usort($arr,"my_sort");
  9. echo json_encode($arr);
  10. </code>

简单说就是数组倒序排序,然后转成json格式。

回复内容:

求把这段php代码转成python的代码,谢谢!

  1. <code>//倒序排序
  2. function my_sort($a,$b)
  3. {
  4. if ($a==$b) return 0;
  5. return ($a<$b)?1:-1;
  6. }
  7. $arr = array('aaa'=>5,'bbb'=>3,'ccc'=>4);
  8. usort($arr,"my_sort");
  9. echo json_encode($arr);
  10. </code>

简单说就是数组倒序排序,然后转成json格式。

PHP 中的 associative array 是一種 ordered mapping (有序映射).
這代表了 Python 中的 dictionary 並非完全相等於 associative array.

其次, json 據我所知並不支援 ordered mapping,所以如果你想要完成這項任務可能要:

  1. 使用 Python 中的有序映射對象: OrderedDict (請參考OrderedDict)

  2. OrderedDict 轉為 list 再轉為 json

  3. 到時候要使用該項資料時,必須從 json 中 load 進 list 再轉回 OrderedDict


以下是 Python3 的代碼讓你參考:

代碼:

  1. <code>import json
  2. from collections import OrderedDict
  3. # using OrderedDict
  4. arr = {"aaa":5,"bbb":3,"ccc":4, "ddd":7}
  5. arr = OrderedDict(sorted(arr.items(), key=lambda item: item[1], reverse=True))
  6. # or you can create an OrderedDict directly:
  7. # arr = OrderedDict([('aaa', 5), ('bbb', 3), ('ccc', 4), ('ddd', 7)])
  8. print(arr)
  9. # list
  10. arr = list(arr.items())
  11. print(arr)
  12. # json dump
  13. json_arr = json.dumps(arr)
  14. print(json_arr)
  15. # json load
  16. arr = OrderedDict(json.loads(json_arr))
  17. print(arr)
  18. </code>

結果:

  1. <code>OrderedDict([('ddd', 7), ('aaa', 5), ('ccc', 4), ('bbb', 3)])
  2. [('ddd', 7), ('aaa', 5), ('ccc', 4), ('bbb', 3)]
  3. [["ddd", 7], ["aaa", 5], ["ccc", 4], ["bbb", 3]]
  4. OrderedDict([('ddd', 7), ('aaa', 5), ('ccc', 4), ('bbb', 3)])
  5. </code>

P.S. 任何不清楚的地方都歡迎用評論告訴我,我們可以再討論

  1. <code class="php">import json
  2. arr={"aaa":5,"bbb":3,"ccc":4}
  3. print json.dumps(sorted(arr.values(),reverse=True))#'[5, 4, 3]'</code>

python代码(改造后)

  1. <code>#!/usr/bin/env python
  2. #encoding:utf-8
  3. import json
  4. if __name__ == '__main__':
  5. myDict = {'aaa':5,'bbb':6,'ccc':777}
  6. outDic = sorted(myDict.iteritems(), key=lambda asd: asd[1], reverse=True)
  7. print '排序前的字典,类似于php的array'
  8. print myDict
  9. print '排序后json</code>
输出:' print json.dumps(outDic)

输出:

  1. <code>/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 /Users/luyh/www/python/lesson1/pysort.py
  2. 排序前的字典,类似于php的array
  3. {'aaa': 5, 'bbb': 6, 'ccc': 777}
  4. 排序后json</code>
输出: [["ccc", 777], ["bbb", 6], ["aaa", 5]] Process finished with exit code 0

人气教程排行