www.91084.com

GVKun编程网logo

Python:不按字典顺序对字符串编号进行排序(python字典按字母排序)

16

在本文中,您将会了解到关于Python:不按字典顺序对字符串编号进行排序的新资讯,同时我们还将为您解释python字典按字母排序的相关在本文中,我们将带你探索Python:不按字典顺序对字符串编号进行

在本文中,您将会了解到关于Python:不按字典顺序对字符串编号进行排序的新资讯,同时我们还将为您解释python字典按字母排序的相关在本文中,我们将带你探索Python:不按字典顺序对字符串编号进行排序的奥秘,分析python字典按字母排序的特点,并给出一些关于angularjs – 如何使用角度orderBy过滤器按字母顺序对字符串数组进行排序?、c++ - 如何比较c ++中的字符串以便按字典顺序对它们进行排序?、java – 如何按字典顺序对ArrayList进行排序?、java – 如何按字典顺序对二维数组进行排序?的实用技巧。

本文目录一览:

Python:不按字典顺序对字符串编号进行排序(python字典按字母排序)

Python:不按字典顺序对字符串编号进行排序(python字典按字母排序)

我有一个字符串数组,例如:

numbers = ['10','8','918','101010']

使用时sorted(numbers),我按字典顺序对它们进行了排序,例如'8' > '17'

如何遍历根据数字值排序的字符串?

angularjs – 如何使用角度orderBy过滤器按字母顺序对字符串数组进行排序?

angularjs – 如何使用角度orderBy过滤器按字母顺序对字符串数组进行排序?

我有一个包含国家列表的模型
$scope.model = {
    name: "foo",countriesVisited: ["CA","AR","GB","FR","MX","AU","IE","RU","IT","ES","IN","US","NL","DE","CL","BR","JP","NZ","PL"]
  }

使用ng-repeat指令按照显示的顺序列出它们.
设置orderBy过滤器会对商品进行排序,但订单看似随机.见这plunker

取下过滤器并观察输出偏移.将其粘贴回来,这是一个奇怪的顺序.

有没有办法让countriesVisited数组在不将其移动到自己的$scope变量的情况下进行排序?

<li ng-repeat="country in model.countriesVisited | orderBy:'toString()'">

c++ - 如何比较c ++中的字符串以便按字典顺序对它们进行排序?

c++ - 如何比较c ++中的字符串以便按字典顺序对它们进行排序?

你可能会

auto compare_string = [](const auto& lhss,const auto& rhss){
    return std::lexicographical_compare(
        lhss.begin(),lhss.end(),rhss.begin(),rhss.end(),[](const auto& lhsc,const auto& rhsc){
            auto proj = [](char c){ return std::tuple(std::tolower(c),std::isupper(c)); };
            return proj(lhsc) < proj(rhsc);
        }
    );
});

Demo

,

您想要的字符串排序方式不是 std::string 默认实现的方式。但是,您可以传入 std::char_traits 模板参数并自定义排序。

https://en.cppreference.com/w/cpp/string/char_traits

这里有一个关于不区分大小写字符串的实现的相当古老但仍然有趣的讨论:http://www.gotw.ca/gotw/029.htm

#include <string>
#include <string_view>
#include <iostream>
#include <cctype>
#include <cassert>


struct special_char_traits : public std::char_traits<char> {
    static char to_upper(char ch) {
        return std::toupper((unsigned char) ch);
    }
    static bool eq(char c1,char c2) {
        return c1 == c2;
    }
    static bool lt(char c1,char c2) {
        if (c1 == c2)
            return false;
        if (to_upper(c1) == to_upper(c2))
            return !(c1 < c2);
        return c1 <  c2;
    }
    static int compare(const char* s1,const char* s2,std::size_t n) {
        while ( n-- != 0 ) {
            if ( lt(*s1,*s2)) return -1;
            if ( !lt(*s1,*s2)) return 1;
            ++s1; ++s2;
        }
        return 0;
    }
    static const char* find(const char* s,std::size_t n,char a) {
        while ( n-- != 0 ) 
        {
            if (*s == a)
                return s;
            s++;
        }
        return nullptr;
     }
 };


 int main()
 {  
     typedef std::basic_string<char,special_char_traits> ss;
     //handle the case highligheted by Jarod42
     assert(!special_char_traits::lt('a','a'));
     assert(!special_char_traits::lt('A','A'));
     assert(special_char_traits::lt('a','A'));
     assert(!special_char_traits::lt('A','a'));
     assert(!special_char_traits::lt('b','A'));
     assert(special_char_traits::lt('A','b'));

     std::cout << (std::string("AA") < std::string("aa")) << " " << (ss("AA") < ss("aa")) << std::endl;    
 }

仍有几种情况未经测试

比较函数将单个字符的比较委托给上面提供的 lt 函数。

,
std::string a = "A";
std::string b = "B";
if(a < b)
    // Do what you want.

std::string 重载了 < 运算符,这就是您对它们进行排序所需的一切。

另见:Using the less than comparison operator for strings

,

只需创建一个接受两个字符串作为输入的函数。在函数上创建 STL 集。插入两个字符串。它们现在在集合内按字典顺序排序。

java – 如何按字典顺序对ArrayList进行排序?

java – 如何按字典顺序对ArrayList进行排序?

我正在尝试对表示卡值的字符串ArrayList进行排序.因此,有些卡包含字母(“King”),有些包含仅包含数字(“7”)的字符串.我知道使用Collections.sort,但它只对包含字母的字符串进行排序.如何按行编号和按字母顺序对ArrayList进行排序?

编辑:对不起,当我查看排序时,我一定不会太注意.排序正常,我必须被一个10来到2之前的事实所抛弃.谢谢

解决方法

不,Collections.sort将使用Unicode序数词典比较对所有内容进行排序,因为这是 String.compareTo的行为.“7”将出现在“King”之前,“10”将出现在“2”之前.

java – 如何按字典顺序对二维数组进行排序?

java – 如何按字典顺序对二维数组进行排序?

假设我们有一个二维数组如下:

int[][] source = {
  {   3,5,6,1},{   3,3,-6},{  -1,-3,-5,{ 124,43,55,-66}
};

我们如何按字典顺序对多维数组源进行排序?

所以,结果,我希望它是:

[ [ -1,-6],[  3,1],[124,-66] ]

这个网站上的很多问题似乎只建议按每个数组的第一个元素或第二个,第三个等进行排序,但不考虑整个数组.

解决方法

从JDK9开始,有一个名为 Arrays.compare的新方法,它允许您按字典顺序比较两个给定的数组.

文档中对Arrays.compare的简短描述:

If the two arrays share a common prefix then the lexicographic
comparison is the result of comparing two elements,as if by
Integer.compare(int,int),at an index within the respective arrays
that is the prefix length. Otherwise,one array is a proper prefix of
the other and,lexicographic comparison is the result of comparing the
two array lengths.

鉴于您想要修改源数组,那么使用Arrays.sort应该足够了:

Arrays.sort(source,Arrays::compare);

鉴于你想要一个新的数组作为结果,那么我将采用流方式:

int[][] sorted = Arrays.stream(source)
                       .sorted(Arrays::compare)
                       .toArray(int[][]::new);

今天的关于Python:不按字典顺序对字符串编号进行排序python字典按字母排序的分享已经结束,谢谢您的关注,如果想了解更多关于angularjs – 如何使用角度orderBy过滤器按字母顺序对字符串数组进行排序?、c++ - 如何比较c ++中的字符串以便按字典顺序对它们进行排序?、java – 如何按字典顺序对ArrayList进行排序?、java – 如何按字典顺序对二维数组进行排序?的相关知识,请在本站进行查询。

本文标签: