首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Sorted()函数

使用Sorted()函数
EN

Stack Overflow用户
提问于 2014-02-24 15:46:27
回答 2查看 58关注 0票数 0

我制作了一个文本文件,如下所示:

代码语言:javascript
复制
Houston 69.7 degrees F 2,144,491
Hialeah 77.9 degrees F 217,141
Miami 77.3 degrees F 404,048
Carol City 77.3 degrees F 59,443
North Westside 77.3 degrees F 101,285

我尝试按温度从最低到最高对条目进行排序。到目前为止,这是我的尝试。mf2是包含我的列表的文件,mf3是我要写入的文件。

代码语言:javascript
复制
h = aline.find('degrees')
for aline in sorted(mf2, key=lambda aline: aline[(h-5):(h-1)], reverse=False):
    mf3.write(aline)
mf3.close()

该代码不断返回一个列表,如下所示:

代码语言:javascript
复制
Houston 69.7 degrees F 2,144,491
Hialeah 77.9 degrees F 217,141
Miami 77.3 degrees F 404,048
Carol City 77.3 degrees F 59,443
Miramar 76.9 degrees F 108,072
Tamiami 76.8 degrees F 54,788

我已经花了几个小时在这上面,我不知道为什么它不能正确排序。有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2014-02-24 15:56:26

假设每一行都是name temperature "degrees F" some-number格式,您可以尝试

代码语言:javascript
复制
sorted (mf2, key = lambda x: float (x.split (' ') [-4] ) )
票数 4
EN

Stack Overflow用户

发布于 2021-06-16 04:00:27

代码语言:javascript
复制
data=["Houston 69.7 degrees F 2,144,491",
"Hialeah 77.9 degrees F 217,141",
"Miami 77.3 degrees F 404,048",
"Carol City 77.3 degrees F 59,443",
"North Westside 77.3 degrees F 101,285"]

city=[]
temperature=[]
measure=[]
counts=[]

for s in data:
    #print(s)
    all_matches = re.findall(r'([a-zA-Z]+\s*[a-zA-Z]*)|([0-9.,]+)',s)
    city.append(all_matches[0][0])
    temperature.append(all_matches[1][1])
    measure.append(all_matches[2][0])
    counts.append(all_matches[3][1])


    df=pd.DataFrame({'city':city, 'temperature':temperature, 'measure':measure, 'counts':counts})
    df['temperature']=df['temperature'].astype('float')
    df['counts']=df['counts'].apply(lambda row: int(row.replace(',','')))
    print(df.sort_values(by='counts', ascending=False))

输出:

代码语言:javascript
复制
            city  temperature    measure   counts
0        Houston          69.7  degrees F  2144491
2          Miami          77.3  degrees F   404048
1        Hialeah          77.9  degrees F   217141
4  North Westside         77.3  degrees F   101285
3      Carol City         77.3  degrees F    59443
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21981755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档