跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 一个关于排序的问题,请各位大佬赐教
未分類
2 9 月 2020

一个关于排序的问题,请各位大佬赐教

一个关于排序的问题,请各位大佬赐教

資深大佬 : duyuyouci 20

data_list = [{1: “1”}, {3: “3”}, {4: “4”}, {10: “10”}, {7: “7”}, {6: “6”}],
类似这样的数据,怎么用 sort 去排序,sort 里的 key 关键字参数要怎么写
大佬有話說 (16)

  • 資深大佬 : Akikiki

    data_list.sort(key=lambda x: x.keys()[0])

  • 主 資深大佬 : duyuyouci

    @Akikiki 会报错的,TypeError: ‘dict_keys’ object is not subscriptable

  • 資深大佬 : h272377502

    就假设你的字典都是一个 key,sorted(data_list, key=lambda k: list(k.keys())[0])

  • 主 資深大佬 : duyuyouci

    @h272377502 对呀,转化一下类型就好了,厉害

  • 資深大佬 : Akikiki

    @duyuyouci 哦 你是 python3 吧

  • 資深大佬 : mahonejolla

    data_list = [{1: “1”}, {3: “3”}, {4: “4”}, {10: “10”}, {7: “7”}, {6: “6”}]
    kk = data_list.sort(key=lambda x: list(x.keys())[0])
    print(data_list) # [{1: ‘1’}, {3: ‘3’}, {4: ‘4’}, {6: ‘6’}, {7: ‘7’}, {10: ’10’}]
    kk = sorted(data_list, key=lambda k: list(k.keys())[0])
    print(kk) # [{1: ‘1’}, {3: ‘3’}, {4: ‘4’}, {6: ‘6’}, {7: ‘7’}, {10: ’10’}]

  • 資深大佬 : lithbitren

    data_list.sort(key=lambda x: next(iter(x)))

    不转 list 也可以实现

  • 資深大佬 : yucongo

    sorted(data_list, key=lambda x: [*x])

  • 主 資深大佬 : duyuyouci

    @yucongo 这个好像不行,顺序没有变

  • 主 資深大佬 : duyuyouci

    @lithbitren 高级

  • 資深大佬 : yucongo

    In [43]: data_list = [{1: “1”}, {3: “3”}, {4: “4”}, {10: “10”}, {7: “7”}, {6: “6”}]

    In [44]: sorted(data_list, key=lambda x: [*x])
    Out[44]: [{1: ‘1’}, {3: ‘3’}, {4: ‘4’}, {6: ‘6’}, {7: ‘7’}, {10: ’10’}]

    完全用你的数据,python3.6, 顺序怎么没有变呢

  • 資深大佬 : yucongo

    或( in-place ):
    data_list.sort(key=lambda x: [*x])

  • 主 資深大佬 : duyuyouci

    @yucongo 哦,sorted 是创建了一个副本,我打印的原列表,哈哈,高级,但是这个语法不太懂,老哥能解释吗

  • 資深大佬 : lithbitren

    @duyuyouci

    [*x]相当于[i for i in x],也相当于 list(x)

    他这个一行其实可以直接写成 data_list.sort(key=list),本质还是转数组

  • 主 資深大佬 : duyuyouci

    @lithbitren 原来如此,受教了

  • 資深大佬 : yucongo

    对啊,key=list 就行了……
    那么可以来一个最短的:)
    sorted(data_list, key=set)
    或
    data_list.sort(key=set)

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具