我想知道Linq的OrderBy方法决定如何对字符列表进行排序。我认为它在它们在Ascii表中的值的帮助下将char相互比较,但我自己尝试了它并不正确。那么有人知道排序的规则是什么吗?
修改
string[] letters = { " ", "!", "+", "1", "9", "?", "A", "B", "Y", "Z", "[", "a", "b", "y", "z", "{"};
IEnumerable<string> ascending = letters.OrderBy(x => x);
// returns { " ", "!", "?", "[", "{", "+", "1", "9", "a", "A", "b", "B", "y", "Y", "z", "Z"}
我冒了回来收到同样的名单,但我得到了一份完整的新订单。
解: 我使用了一个字符串数组而不是一个char数组,因此OrderBy对字符串进行了排序,这与使用字符时的字符串不同。
答案 0 :(得分:4)
订购很好。它按照比较string
(它是string[]
)的方式对其进行排序。如果您希望它由char
的ASCII值执行,则应为char[]
而不是string[]
:
char[] letters = { ' ', '!', '+', '1', '9', '?', 'A', 'B', 'Y', 'Z', '[', 'a', 'b', 'y', 'z', '{', ' ', '!', '+', '1', '9' };
var descending = letters.OrderByDescending(x => x).ToList();
此外,通过变量的名称,我想您需要OrderByDescending
方法。
答案 1 :(得分:1)
如果由于某种原因你想继续使用字符串,但不想进行默认的区域性敏感比较,可以通过在sess.run(...)
的调用中添加with tf.Session() as sess:
softmax_tensor = sess.graph.get_tensor_by_name('final_result:0')
for image in images:
predictions = sess.run(softmax_tensor, {'DecodeJpeg:0': image})
参数来强制进行“ASCII”排序。 },并指定您希望比较使用代码点值进行排序:
IComparer
答案 2 :(得分:1)
通过ASCII或Unicode值比较两个字符。
ASCII表:http://www.theasciicode.com.ar/american-standard-code-information-interchange/ascii-codes-table.png
所以('A'是65)被认为大于('a'是97)b'coz 65来自97之前。 您可以在上表中查找数组中每个字符的ASCII代码。 (你的数组应该是“char []字母”而不是“字符串[]字母”从我能看到的内容:D)