鱼C论坛

 找回密码
 立即注册
查看: 1352|回复: 6

[已解决]数组排序

[复制链接]
发表于 2018-3-23 00:49:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. [code]list1 =[12,23,23,12,23,34,35,34,36]

  2. a = list(set(i for i in str1))
  3. for i in a:   
  4.     time = str(i)+' ' +str(str1.count(i))
  5. ###
  6. 34 2
  7. 35 1
  8. 12 2
  9. 36 1
  10. 23 3
复制代码
[/code]

如何将list1根据其count值进行降序排序,输出如
23  3
34 2
12 2
35 1
36 1
想不出来了,求助大家!
最佳答案
2018-3-23 08:29:50
  1. >>> list1 =[12,23,23,12,23,34,35,34,36]
  2. >>> list2 = list(set(list1))
  3. >>> list2.sort(key = lambda x: list1.count(x), reverse = True)
  4. >>> list2
  5. [23, 34, 12, 35, 36]
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-3-23 08:10:51 From FishC Mobile | 显示全部楼层
用字典
每个不重复的值为键,重复次数为值,遍历键值比较值大小即可
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-3-23 08:29:50 | 显示全部楼层    本楼为最佳答案   
  1. >>> list1 =[12,23,23,12,23,34,35,34,36]
  2. >>> list2 = list(set(list1))
  3. >>> list2.sort(key = lambda x: list1.count(x), reverse = True)
  4. >>> list2
  5. [23, 34, 12, 35, 36]
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-3-23 11:43:19 | 显示全部楼层
本帖最后由 冰封雪舞 于 2018-3-23 11:44 编辑

str1 =[12,23,23,12,23,34,35,34,36]
a = set(str1)
time=[]
for i in a:
    time.append([i,str1.count(i)])
d=sorted(time,key=lambda x:x[1],reverse=True)
print(d)
这个对初学者应该比较清晰,你可以试试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2018-3-23 13:30:52 | 显示全部楼层
冰封雪舞 发表于 2018-3-23 11:43
str1 =[12,23,23,12,23,34,35,34,36]
a = set(str1)
time=[]

如何将他们保存为字典输出,下面要用到他们的健对值?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-23 13:44:10 | 显示全部楼层
BngThea 发表于 2018-3-23 08:10
用字典
每个不重复的值为键,重复次数为值,遍历键值比较值大小即可

如何构造成字典,并在后面能运用到他们的健对值?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-23 20:59:52 | 显示全部楼层
本帖最后由 冰封雪舞 于 2018-3-23 21:01 编辑
大约在冬季 发表于 2018-3-23 13:30
如何将他们保存为字典输出,下面要用到他们的健对值?


我上边的不是字典模式,而是数组模式,保存为数组,应该是你需要的那种,字典其实不太好处理,如果你这个数组以后不变的话,字典勉强能处理,因为数组里边某个数字的重复次数可能会是一样的,比如,12跟34都是重复2次,所以重复的次数不能作为字典的键,只能把数组里边的数字作为键,我把程序改动了下做个例子,你看下。
str1 =[12,23,23,12,23,34,35,34,36]
a = set(str1)
time=[]
for i in a:
    time.append([i,str1.count(i)])
d=sorted(time,key=lambda x:x[1],reverse=True)
#for i in d:
    #print(i)
#上边是你的初步要求,如果你非要用字典形式来存储与输出


tt = {}#创建一个空字典名字叫tt
for i in d:
    tt[i[0]]=i[1]#把d里边的内容添加到字典tt里边
print(tt)
yy=sorted(tt.items(),key = lambda x:x[1],reverse = True) #对字典里边元素按值(重复的次数)排序,并放到YY里边
#如果要按照数组内的数值大小排序,把x[1]改成x[0]即可
for d in yy:
    print(d)
#print(yy)

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-9 16:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表