可能重复:
Python:按值对字典排序
我有一个这样的字典:
A = {'Name1':34, 'Name2': 12, 'Name6': 46,....}
Run Code Online (Sandbox Code Playgroud)
我想要一个按值排序的键列表,即 [Name2, Name1, Name6....]
谢谢!!!
我必须使用python计算文本中的单词频率.我想把字词保存在字典中并对每个单词进行计数.
现在,如果我必须根据出现次数对单词进行排序.我可以使用相同的字典而不是使用新的字典,其中键作为计数和单词数组作为值吗?
我试图按键排序dict但没有机会.这是我的词:
result={'1':'value1','2':'value2',...}
Run Code Online (Sandbox Code Playgroud)
我正在使用Python2.7,我发现了这一点
keys = result.keys()
keys.sort()
Run Code Online (Sandbox Code Playgroud)
但这不是我的预期,我有一个未分类的词典.
我有一本字典:
{ 'a': 6, 'b': 1, 'c': 2 }
Run Code Online (Sandbox Code Playgroud)
我想按价值迭代它,而不是按键.换一种说法:
(b, 1)
(c, 2)
(a, 6)
Run Code Online (Sandbox Code Playgroud)
什么是最直接的方式?
我有一个看起来像这样的字典
{ "keyword1":3 , "keyword2":1 , "keyword3":5 , "keyword4":2 }
我想将其转换为DESC并创建一个仅包含关键字的列表.例如,这将返回
["keyword3" , "keyword1" , "keyword4" , "keyword2"]
我发现的所有例子都使用lambda,我对此并不是很强.有没有办法可以循环使用它,并按我的方式对它们进行排序?谢谢你的任何建议.
PS:如果能有所帮助,我可以用不同的方式创建最初的dict.
我基本上试图遍历一个字典并打印出从最大值到最低值的键/值.我一直在搜索这个网站,很多人都在使用lambda,但我不确定它是如何工作的所以我现在正试图避免它.
dictIterator = iter(sorted(bigramDict.iteritems()))
for ngram, value in dictIterator:
print("There are " + str(value) + " " + ngram)
Run Code Online (Sandbox Code Playgroud)
查看上面的代码,我假设它会生成一个迭代器,它按从大到小的顺序返回键/值对,但事实并非如此.
任何人都可以看到问题是什么?或另一种方法吗?
我有下面提到的表格字典:
a_dict = { 'e': (1, 100), 'a': (2, 3) }
Run Code Online (Sandbox Code Playgroud)
我无法通过元组的第二个元素对其进行排序.结果字典将如下所示:
a_dict = { 'a': (2, 3), 'e': (1, 100) }
Run Code Online (Sandbox Code Playgroud) def sort_dictionary( wordDict ):
sortedList = []
for entry in sorted(wordDict.iteritems(), key = lambda (k, v): (-v, k) ):
sortedList.append( entry )
return sortedList
Run Code Online (Sandbox Code Playgroud)
该函数将接收包含以下信息的字典:{'this':1,'is':1,'a':1,'large':2,'sentence':1}我想让它生成列表列表,其中元素首先由字典的值从最大值到最小值排序,然后按字母顺序排列.
使用python 2.7.2运行时该函数工作正常,但我收到错误:
File "frequency.py", line 87
for entry in sorted(wordDict.iteritems(), key = lambda (k, v): (-v, k)):
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
当我用python 3.2.3运行程序时.我一直在寻找原因,或2.7和3.2之间的语法差异,并且没有提出任何结果.任何帮助或修复将不胜感激.
我有一个集合,sentences其中包含字符串形式的英语句子.我想创建的一个子集sentences,sentences2,其中包含只含有20个独特的单词的句子.当然,有很多很多这样的子集,但我正在寻找"最好"的子集,而"最好的"我指的是所有单词中具有最高可能表示的子集sentences2.
以下示例将进一步阐明"最佳"的含义:
如果我要过滤sentences这组词:
(i,you,do,think,yes,dont,can,it,good,cant,but,am,why,where,now,no,know,here,feel,are)
Run Code Online (Sandbox Code Playgroud)
我会得到以下内容:
sentences2 = set(("where are you now", "here i am", "can you do it", "yes i can", "but can i do it", "no you cant", "do you feel good", "yes i do", "why are you here", "i dont know", "i think i know why", "you dont think", "yes i do", "no you dont", "i dont think you think", "i feel good", "but i am good", "i …Run Code Online (Sandbox Code Playgroud) 我有这本字典:
statuses = {
'pending' : {'status_for':'all', 'position':1},
'cancelled' : {'status_for':'all','position':2},
'approved' : {'status_for':'owner', 'position':1},
'rejected - owner' : {'status_for':'owner', 'position':2},
'accepted' : {'status_for':'dev', 'position':1},
'rejected - developer' : {'status_for':'dev', 'position':3},
'closed' : {'status_for':'dev', 'position':5},
}
Run Code Online (Sandbox Code Playgroud)
我还有一个函数来拉status_for取其中任何一个owner或dev看起来像这样的值并将其放入PyQt QComboBox:
for s in statuses:
if statuses[s]['status_for'] == "dev" or statuses[s]['status_for'] == "all":
cb_developer_status.addItem(s.capitalize(), s)
Run Code Online (Sandbox Code Playgroud)
我想通过position价值来订购这些.有什么好办法可以做到这一点,所以当我用组合框填充时,我按照预定义的顺序进行填充?
我意识到上面的代码片段正在检查'dev'和'all',我现在的假设是我必须循环遍历字典两次才能按照我希望的顺序获得两个独立的块(即'all' '出现在'dev'之前).
我看过这篇文章,但我不确定如何将这个答案转换成字典词典.
python ×10
dictionary ×5
sorting ×5
algorithm ×1
combinations ×1
lambda ×1
linguistics ×1
loops ×1
pyqt ×1
statistics ×1
syntax-error ×1