如何在python中对字符串中的数字进行排序

2024-04-25 05:24:51 发布

您现在位置:Python中文网/ 问答频道 /正文

对不起。。。我的英语不是很好。。。所以我不知道怎么问这个问题。。。请读一读,这样你就能明白我想要什么。。。 我有一个需要词典的def:

{'John':30.370, 'Mike':84.5, 'Sara':97.55, 'Frank': 75.990}

我想把这个还给你:

Sara       97.55
Mike       84.50
Frank      75.99
John       30.37

但我的解决方案不返回这个! 我的解决方案:

def formatted(a):
    s=''
    for i in a:
        d='{0:<10s}{1:>6.2f}\n'.format(i, a[i])
        s=s+d
    s=s.rstrip()  
    return s
a={'John':30.370, 'Mike':84.5, 'Sara':97.55, 'Frank': 75.990}
print (formatted(a))

它返回:

John       30.37
Mike       84.50
Sara       97.55
Frank      75.99

我应该把这些数字分类…但我不知道怎么做! 有人能帮忙吗??你知道吗


Tags: frankinformatforreturndef数字解决方案
3条回答

您需要使用sorted[operator.itemgetter][1]valuessort字典。你知道吗

In [100]: _dict = collections.OrderedDict(sorted(d.items(), key=operator.itemgetter(1), reverse=True)) # d is your dictinory

In [101]: _dict
Out[101]: 
OrderedDict([('Sara', 97.55),
             ('Mike', 84.5),
             ('Frank', 75.99),
             ('John', 30.37)])

然后需要使用collections.OrderedDict,因为dictionaries是散列密钥对。你知道吗

for i, v in _dict.items():
       d='{0:<10s}{1:>6.2f}\n'.format(i, v)
       print(d)

Sara 97.55

Mike 84.50

Frank 75.99

John 30.37

>>> d = {'John':30.370, 'Mike':84.5, 'Sara':97.55, 'Frank': 75.990}
>>> b = sorted(d.items(), key=lambda x: x[1])
>>> print b
[('John', 30.37), ('Frank', 75.99), ('Mike', 84.5), ('Sara', 97.55)] 

用于反向

>>> c = sorted(d.items(), key=lambda x: x[1] ,reverse=True)
>>> print c
[('Sara', 97.55), ('Mike', 84.5), ('Frank', 75.99), ('John', 30.37)]

打印使用:

d = collections.OrderedDict(dict(c)) # c is upder dict
for i, v in d.items(): 
    _dict_pair='{0:<10s}{1:>6.2f}\n'.format(i, v)
    print(_dict_pair)

在一行中:

d = {'John': 30.370, 'Mike': 84.5, 'Sara': 97.55, 'Frank': 75.990}
print(
    "\n".join(
        '{0:<10s}{1:>6.2f}'.format(k, v) for k, v in sorted(d.items(), key=lambda x: x[1], reverse=True)
    )
)

Sara       97.55
Mike       84.50
Frank      75.99
John       30.37

说明:

  • 首先,根据值对字典排序:sorted(d.items(), key=lambda x: x[1], reverse=True)=>;sorted method in python
  • 然后,将格式应用于所有排序的项=>;list comprehension
  • 最后,使用"\n".join()将所有人重新组合并格式化为一个字符串,由\n=>;join method分隔
  • 最后,通过print()方法打印所有内容

相关问题 更多 >