Я работаю на небольшую программу, как написано нижесортировочных пар ключ-значение в питона
"""Count words."""
# TODO: Count the number of occurences of each word in s
# TODO: Sort the occurences in descending order (alphabetically in case of ties)
# TODO: Return the top n words as a list of tuples (<word>, <count>)
from operator import itemgetter
def count_words(s, n):
"""Return the n most frequently occuring words in s."""
t1=[]
t2=[]
temp={}
top_n={}
words=s.split()
for word in words:
if word not in temp:
t1.append(word)
temp[word]=1
else:
temp[word]+=1
t1 = sorted(temp,key=temp.get,reverse=True) # to get sorted keys
t2 = sorted(temp.values(),reverse=True) # to get sorted values
top_n = dict(zip(t1,t2))
print top_n
return
def test_run():
"""Test count_words() with some inputs."""
count_words("cat bat mat cat bat cat", 3)
count_words("betty bought a bit of butter but the butter was bitter", 3)
if __name__ == '__main__':
test_run()
Я просто пытаюсь отсортировать пару ключ-значение. У меня есть ниже вопросы:
- В приведенной выше программе, когда я печатаю слияние двух отсортированных его показывает мне только несортированный слияние
- Как получить отсортированный пару ключей значение по питона функции тока FXN, который я используя его wither возвращает ключи или значения. Можем ли мы получить как-то?
ли вы смотрите в [ collections.Counter] (https://docs.python.org/2.7/library/collections.html#collections.Counter)? Вы можете также рассмотреть [collections.defaultdict] (https://docs.python.org/2.7/library/collections.html#collections.defaultdict), чтобы избавиться от вашего оператора if. 'defaultdict (0)' будет создавать словарь, который использует 0 в качестве значения по умолчанию для неизвестных ключей. – mhoff