【问题标题】:Sort python based on value根据值对python进行排序
【发布时间】:2014-12-07 05:17:05
【问题描述】:

我写了一些代码只是为了好玩

symbols = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "o", "p", "q",          "r", "s", "t", "u", "v", "w", "x", "y", "z"]
numbers = []
counter = 0

print("Enter Name")
name = input(">")
if name:
    new_name = list(name)

    for x in range(0, len(symbols)):
        count_name = new_name.count(symbols[x])
        numbers.append(count_name)
        if count_name:
            counter += 1
    print("Character amount =", counter)

    for x in range(0, len(numbers)):
        if numbers[x]:
            print(symbols[x], "=", numbers[x])
else:
    print("Input = NULL")

例如,当您输入您的姓名时 罗默

它会打印出如下内容:

Character amount = 4    
e = 2    
m = 1    
o = 1    
r = 2    

但我希望它根据最常出现的字符进行排序

【问题讨论】:

  • 那么你做了什么尝试来实现它?
  • 那么,您已经...阅读了相关文档?试图实施出错的事情?试图修复该实现无济于事?或者只是把它扔给我们?
  • 在排序之前,您必须找到一种方法来组合 symbolsnumbers 数组 - 我建议 zip
  • 另一种方法是使用dictionary,将字母作为键。例如d = {}; d['a'] = d.get('a', 0) + 1 (get method)
  • 我添加了这个:total = dict(zip(symbols, numbers)).这给了我一本字典,但我在网上搜索了一下,似乎不可能按值排序?

标签: python list sorting python-3.x


【解决方案1】:
for number, symbol in sorted(zip(numbers, symbols), reverse=True):
    if number:
        print(symbol, number)

【讨论】:

  • 非常感谢!您是否还知道如何显示最常见的字符以及是否有多个最高字符,例如 e = 3 和 r = 3。所以基本上显示所有最常见的字符
【解决方案2】:

如果不是家庭作业,请使用集合中的标准库 Counter 提供所需的功能

from collections import Counter
x =Counter("roemer")
x.most_common()

>>> [('r', 2), ('e', 2), ('m', 1), ('o', 1)]

最常见的输出已经排序。可以使用使用列表推导的 Counter 类的其他方法来获取所需格式的输出。

【讨论】:

  • 这不是家庭作业,但我已经这样做了。 sort_dic = dict(sorted(zip(symbols, numbers))) maxval = max(sort_dic.items(),key=operator.itemgetter(1))[1] max_keys = [k for k, v in sort_dic.items() if v == maxval] max_sort_keys = sorted(max_keys) try: if max_sort_keys[1]: print("最常见的字符是", max_sort_keys) 除了IndexError: print("最常见的字符是", max_sort_keys) print("字符数量=", 计数器)
  • 那么你会同意 x.most_common() 更具可读性
  • 当然...“用于计算可散列项的字典子类”docs.python.org/2/library/collections.html
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-05
  • 1970-01-01
  • 1970-01-01
  • 2010-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多