我有一个dict(也是一个更大的dict的关键)看起来像
wd[wc][dist][True]={'course': {'#': 1, 'Fisher': 4.0},
'i': {'#': 1, 'Fisher': -0.2222222222222222},
'of': {'#': 1, 'Fisher': 2.0},
'will': {'#': 1, 'Fisher': 3.5}}
Run Code Online (Sandbox Code Playgroud)
我想通过相应的'Fisher'值对关键词(在最高级别)进行排序......以便输出看起来像
wd[wc][dist][True]={'course': {'Fisher': 4.0, '#': 1}, 'will': {'Fisher': 3.5, '#': 1}, 'of': {'Fisher': 2.0, '#': 1}, 'i': {'Fisher': -0.2222222222222222, '#': 1}}
Run Code Online (Sandbox Code Playgroud)
我已尝试使用items()和sorted()但无法解决...请帮助我:(
可能重复:
Python:按值对字典排序
d = {"a":4, "b":12, "c":2}
Run Code Online (Sandbox Code Playgroud)
如果我使用sorted()与lambda:
s = sorted(d.items(), key=lambda(k,v):(v,k))
Run Code Online (Sandbox Code Playgroud)
我得到一个列表元组(键,值)但我又想要一个字典:
{"c":2, "a":4, "b":12}
Run Code Online (Sandbox Code Playgroud)
而dict(the_list_of_tuples)你正在回到原点.
我有一个像这样的Python字典:
{
'apple': datetime.datetime(2012, 12, 20, 0, 0, tzinfo=<UTC>),
'orange': datetime.datetime(2012, 2, 4, 0, 0, tzinfo=<UTC>),
'raspberry': datetime.datetime(2013, 1, 9, 0, 0, tzinfo=<UTC>)
}
Run Code Online (Sandbox Code Playgroud)
按日期时间值对字典进行排序的最佳方法是什么?我正在寻找一个列表输出,按键从最近到最旧.
假设我有这本词典:
{"A":3,"B":4,"H":1,"K":8,"T":0}
Run Code Online (Sandbox Code Playgroud)
我想获得最高 3 个值的键。所以在这种情况下,我将获得密钥:K,B和A
我有一个带字符串键和int值的字典.有什么办法我可以拿这个dict并用它来获取从最高到最低值的键列表?
例:
>>> myDict = {'seven': 7, 'four': 4, 'one': 1, 'two': 2, 'five': 5, 'eight': 8}
>>> myList = myDict.sortNumericallyByKeys
>>> myList
['eight', 'seven', 'five', 'four', 'two', 'one']
Run Code Online (Sandbox Code Playgroud) 我是 Python 和编程的新手,我很难记住这些东西。因为我开始读的书完全无聊,我开始玩弄一些想法。
这是我想要做的:打开文本文件,计算每个值的频率(只是一个系统名称列表),按频率对列表进行排序,然后返回结果。在网上搜索一些代码后,我在这里得到了这个:
file = open('C:\\Temp\\Test2.txt', 'r')
text = file.read()
file.close()
word_list = text.lower().split(None)
word_freq = {}
for word in word_list:
word_freq[word] = word_freq.get(word, 0) + 1
list = sorted(word_freq.keys())
for word in list:
print ("%-10s %d" % (word, word_freq[word]))
Run Code Online (Sandbox Code Playgroud)
它有效,但它按列表中的单词/系统名称排序:
pc05010 3
pc05012 1
pc05013 8
pc05014 2
Run Code Online (Sandbox Code Playgroud)
我想要这样:
pc05013 8
pc05010 3
pc05014 2
pc05012 1
Run Code Online (Sandbox Code Playgroud)
现在我正在搜索按值排序功能数小时。我打赌它很容易,但我什么也没找到。
对于我初学者的观点,它与这条线有关:
list = sorted(word_freq.keys())
Run Code Online (Sandbox Code Playgroud)
我想也许是:
list = sorted(word_freq.values())
Run Code Online (Sandbox Code Playgroud)
但不.... 看到关于这种语言的大量信息让我感到非常沮丧,但无法让如此简单的事情发挥作用。
请帮忙 :)
多谢!
我有字典
d = {'a':3, 'b':7, 'c':8}
Run Code Online (Sandbox Code Playgroud)
我想知道我怎么能扭转字典的顺序才能使它看起来像这样:
d = {3:'a', 7:'b', 8:'c'}
Run Code Online (Sandbox Code Playgroud)
我想这样做,而不是像这样写.有没有办法可以使用第一个字典来获得新的结果?
我正在写一个用于在邮局购买邮票的小优化工具.
在这个过程中,我正在使用一个字典,我根据我在其他"着名"问题中学到的东西进行排序: 按值排序Python字典
在我的情况下,我的字典稍微复杂一些:
- 一个四项目元组来制作密钥
- 另一个五项目元组来制作数据.
这个字典的来源是一个迭代,每个成功的循环都添加一行:
MyDicco[A, B, C, D] = eval, post, number, types, over
Run Code Online (Sandbox Code Playgroud)
这是一个简单的运行的只是一个很小的例子,试图为75美分:
{
(0,0,1,1):(22,75,2,2,0)
(0,0,0,3):(31,75,3,1,0)
(0,0,2,0):(2521,100,2,1,25)
(0,1,0,0):(12511,200,1,1,125 )
(1,0,0,0):( 27511,350,1,2,275)
}
到目前为止,我使用此代码进行排序(正在工作):
MyDiccoSorted = sorted(MyDicco.items(), key=operator.itemgetter(1))
Run Code Online (Sandbox Code Playgroud)
我按照我的评分进行排序,因为排序是为了将最佳解决方案带到顶端.评估得分只是五项目元组中的一个数据(在示例中,这些是评估得分:22,31,2521,12511和27511).
正如你在上面的例子中看到的那样,它是由第二个元组索引1进行排序(如我所愿).但是我不得不(脾气暴躁地)将我的"评分"带到我的第二个元组的前面.代码显然是使用整个二元组来进行排序过程,这很重且不需要.
这是我的问题:我怎样才能更精确地排序.我不想按字典的第二个元组排序:我想准确地定位第一个项目.
理想情况下,我想把这个值恢复到原来的位置,即成为第二个元组中的最后一个项目 - 并且仍然按它排序.
我已经阅读并试验了operator.itemgetter()的语法,但还没有设法"抓住""我的第二个项目的第一项". https://docs.python.org/3/library/operator.html?highlight=operator.itemgetter#operator.itemgetter
(注意:允许使用元组作为键和值,根据:
https://docs.python.org/3/tutorial/datastructures.html?highlight/_Dictionary
,这些对我的项目工作正常;这个问题是只是为了更好的排序)
对于那些喜欢一点背景的人(你会对我大喊我应该使用其他方法,但我现在正在学习字典(这是这个项目的目的之一)):
这种优化适用于发展中国家,这些国家通常没有某些邮票价值,或者在任何特定邮局的库存有限.它稍后将在Android手机上运行.
我们正在定期邮寄(是的,信件).如果您考虑六种不同的基于目的地的邮资和数百封邮件信件,那么使用可用值确定每个目的地的确切邮资并找到具有特定值的低库存的解决方案是一个不平凡的过程.
还有其他模块可以帮助将理论上的最佳解决方案变成可以在任何一天实际购买的东西,通过战略对话指导......
关于我在这个问题上的字典:我迭代所有合理的(高到足以制作所需的邮资,并且只支付高达一个邮票的一小部分)邮票价值的组合.
然后我计算一个"成功"值,它基于所需的邮票数量(优先级),所需类型的数量(较低的优先级)(因为购买不同的邮票需要额外的时间在柜台)和非常高的支付罚款-过度.所以最低价值意味着最高成功.
我在字典中收集所有合理的"解决方案",其中需要标记的元组作为关键字,而另一些结果数据的元组构成了值.它有点过度定义,因为人类需要在项目的这个阶段读取它(用于调试).
如果你很好奇并且想要阅读这个例子(第一行):
colums是:
我想生成大量文本中最不常见单词的有序列表,其中最常见的单词首先出现,并且值指示它在文本中出现的次数.
我从一些在线期刊文章中删除了文本,然后简单地分配和分割;
article_one = """ large body of text """.split()
=> ("large","body", "of", "text")
Run Code Online (Sandbox Code Playgroud)
看起来像正则表达式适合接下来的步骤,但是对编程不熟悉我不太精通 - 如果最好的答案包括正则表达式,有人能指出我除了pydoc之外的一个很好的正则表达式教程吗?
python ×10
dictionary ×8
sorting ×4
list ×3
count ×1
datetime ×1
max ×1
python-2.7 ×1
python-3.x ×1