用小写字母,大写字母和数字对字典进行排序

The_P_of_the_T

我想先按数字排序字典的键,然后按小写字母,再按大写字母的顺序对字典进行排序,然后将其返回给字典并返回正确的键值。我想到了这一点,但我认为这太长了。(board是您要排序的给定字典)board示例:

board = {
  (3, 4) : 0,
  ("a", 4) : 0,
  (1, 3)  :  0,
  ("X", 5) : 5,
  ("X", 1) : 1
}

我的问题是是否可以缩短代码。

x = []
y = []
for k in dict.keys(board):
    if str(k[0]).islower():
        list.append(x, (k, board[k]))
for k in dict.keys(board):
    if k[0] == "X":
        list.append(y, (k, board[k]))
for k in range(0, len(x)):
    del board[x[k][0]]
for k in range(0, len(y)):
    del board[y[k][0]]
x = sorted(x)
y = sorted(y)
for k in range(0, len(x)):
    board[x[k][0]] = x[k][1]
for k in range(0, len(y)):
    board[y[k][0]] = y[k][1]
达里尔

根据所需顺序但基于键元组进行以下排序。

因此('X',1)应该在('X',5)之前,因为第一个元素相等,因此取决于第二个元素。

排序例程

def sort_dict(d):
  def ordering(i):
    """Create ordering so that numbers are before strings
       lowercase strings are before upper case strings"""
    return ([isinstance(i, int), isinstance(i, str) and i.islower(), isinstance(i, str) and i.isupper()].index(True), i)

  # By applying ordering to all elements of key, we create a new tuple
  # which allows us to compare
  return dict(sorted(d.items(), key=lambda kv: tuple(map(ordering, kv[0]))))

测试

board =  {(3,4):0,("a",4):0,(1,3):0,("X",5):5,("X",1):1}
print(sort_dict(board))

输出量

{(1, 3): 0, (3, 4): 0, ('a', 4): 0, ('X', 1): 1, ('X', 5): 5}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

Swift在大写字母“ Self”和小写字母“ self”之间的区别

来自分类Dev

正则表达式-用大写字母替换下划线小写字母

来自分类Dev

Haskell的首次尝试:将小写字母转换为大写字母

来自分类Dev

如何按字母顺序对字符串进行排序,使小写字母排在大写字母之前?

来自分类Dev

用大写字母或小写字母搜索单词

来自分类Dev

PHP换行符,其中小写字母与大写字母相交

来自分类Dev

小写字母和数字

来自分类Dev

在SQL Server中将所有大写字母转换为小写字母?

来自分类Dev

将小写字母转换为大写字母并打印

来自分类Dev

在stringr中拆分大写字母紧跟小写字母的字符串

来自分类Dev

与大写字母的中间而不是小写字母垂直对齐?

来自分类Dev

需要在Delphi中将大写字母更改为小写字母

来自分类Dev

熊猫用大写字母排序

来自分类Dev

x86 Assembly:将大写字母更改为小写字母

来自分类Dev

使用LC_COLLATE指定排序顺序,因此小写字母在大写字母之前

来自分类Dev

查找大写字母,中间包含一个小写字母

来自分类Dev

如何将大写字母转换为小写字母?

来自分类Dev

如何对列表进行排序,以获取大写字母之前的所有小写字母单词?

来自分类Dev

计算具有自己功能的数字,大写字母,小写字母和空格

来自分类Dev

如何按字母顺序对字符串进行排序,使小写字母排在大写字母之前?

来自分类Dev

XSL Sort将小写字母与大写字母分开对待

来自分类Dev

用大写字母或小写字母搜索单词

来自分类Dev

如何创建与AngularJS中相同的Ruby数组排序,小写字母应位于大写字母的前面

来自分类Dev

如果小写字母之前存在小写字母且没有空格,则php用大写字母分解字符串

来自分类Dev

用大写字母和小写字母替换大写字母

来自分类Dev

小写字母和数字

来自分类Dev

将大写字母转换为小写字母

来自分类Dev

使用LC_COLLATE指定排序顺序,因此小写字母在大写字母之前

来自分类Dev

用小写字母和连字符替换整个字符串中的大写字母

Related 相关文章

  1. 1

    Swift在大写字母“ Self”和小写字母“ self”之间的区别

  2. 2

    正则表达式-用大写字母替换下划线小写字母

  3. 3

    Haskell的首次尝试:将小写字母转换为大写字母

  4. 4

    如何按字母顺序对字符串进行排序,使小写字母排在大写字母之前?

  5. 5

    用大写字母或小写字母搜索单词

  6. 6

    PHP换行符,其中小写字母与大写字母相交

  7. 7

    小写字母和数字

  8. 8

    在SQL Server中将所有大写字母转换为小写字母?

  9. 9

    将小写字母转换为大写字母并打印

  10. 10

    在stringr中拆分大写字母紧跟小写字母的字符串

  11. 11

    与大写字母的中间而不是小写字母垂直对齐?

  12. 12

    需要在Delphi中将大写字母更改为小写字母

  13. 13

    熊猫用大写字母排序

  14. 14

    x86 Assembly:将大写字母更改为小写字母

  15. 15

    使用LC_COLLATE指定排序顺序,因此小写字母在大写字母之前

  16. 16

    查找大写字母,中间包含一个小写字母

  17. 17

    如何将大写字母转换为小写字母?

  18. 18

    如何对列表进行排序,以获取大写字母之前的所有小写字母单词?

  19. 19

    计算具有自己功能的数字,大写字母,小写字母和空格

  20. 20

    如何按字母顺序对字符串进行排序,使小写字母排在大写字母之前?

  21. 21

    XSL Sort将小写字母与大写字母分开对待

  22. 22

    用大写字母或小写字母搜索单词

  23. 23

    如何创建与AngularJS中相同的Ruby数组排序,小写字母应位于大写字母的前面

  24. 24

    如果小写字母之前存在小写字母且没有空格,则php用大写字母分解字符串

  25. 25

    用大写字母和小写字母替换大写字母

  26. 26

    小写字母和数字

  27. 27

    将大写字母转换为小写字母

  28. 28

    使用LC_COLLATE指定排序顺序,因此小写字母在大写字母之前

  29. 29

    用小写字母和连字符替换整个字符串中的大写字母

热门标签

归档