请教一个二维数组查重并且排序的问题

mzccvb 2019-06-26 03:00:48
比如说我有二维数组
[[a, 1],
[a, 2],
[b, 1],
[b, 2],
[b, 3]]

如何先按第一列查重,然后再按第二列排序?得到[[a, 2], [b, 3]]的结果?
...全文
104 点赞 收藏 8
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
mzccvb 2019-06-26
引用 7 楼 陈年椰子 的回复:
字典 只能是 一个键名 ,一个键值
你如果你想多个数据 只能这样:

a_dict = {'a':[a,1,211], 'b':[b,222,1111]}
或者

a_dict = {'a':{'value':[1,211]}, 'b':{'value':[,222,1111]}}
原来如此,了解了,感谢感谢!
回复
陈年椰子 2019-06-26
字典 只能是 一个键名 ,一个键值 你如果你想多个数据 只能这样: a_dict = {'a':[a,1,211], 'b':[b,222,1111]} 或者 a_dict = {'a':{'value':[1,211]}, 'b':{'value':[,222,1111]}}
回复
mzccvb 2019-06-26
引用 5 楼 陈年椰子 的回复:
不知道你指的是不是这个意思


import pandas as pd
a_list = [['a', 1 , 121], ['a', 2, 122], ['b', 1, 123], ['b', 2, 124], ['b', 3, 125]]

df = pd.DataFrame(a_list)
df.columns = ['ch','val', 'other']
gp=df.groupby(['ch']).apply(lambda t: t[t.val==t.val.max()])
print(gp)
for index, row in gp.iterrows():
print(row[0],row[1],row[2])



用dataframe 处理的话, 后面的数据也在组里的。 你看看我例子,
['a', 1 , 121 。。。。 ] 根据不同需求,调整一下应该可以。
是,dataframe我确实是按照您这个后面的写法来修改的,并且work了,感谢,只是我纯粹是还想了解一下用字典推导式的方法如何写入多元素~~不知您对这个方法熟不熟悉了
回复
陈年椰子 2019-06-26
不知道你指的是不是这个意思


import pandas as pd
a_list = [['a', 1 , 121],  ['a', 2, 122],  ['b', 1, 123],  ['b', 2, 124],  ['b', 3, 125]]

df = pd.DataFrame(a_list)
df.columns = ['ch','val', 'other']
gp=df.groupby(['ch']).apply(lambda t: t[t.val==t.val.max()])
print(gp)
for index, row in gp.iterrows():
    print(row[0],row[1],row[2])

用dataframe 处理的话, 后面的数据也在组里的。 你看看我例子, ['a', 1 , 121 。。。。 ] 根据不同需求,调整一下应该可以。
回复
mzccvb 2019-06-26
引用 3 楼 陈年椰子 的回复:
参考一下


import pandas as pd
a_list = [['a', 1], ['a', 2], ['b', 1], ['b', 2], ['b', 3]]
df = pd.DataFrame(a_list)
df.columns = ['ch','val']
gp=df.groupby(['ch']).apply(lambda t: t[t.val==t.val.max()])
for index, row in gp.iterrows():
print(row[0],row[1])

谢谢,您的这个dataframe的方法的确可以,我如果有多列的话在columns中再加元素即可了。顺便还想与您讨论一下用字典推导式的方法来解决这个问题,a = {k: v for k, v in a_list}一下子就能获取这个相同键的最大值了,但是这个无法输入多列元素,比如[a, 1, '123'],[b, 2, '456']等,这个后面的元素只是我的另外所需,无关排序跟查重,这样子的话字典无法读取。请问一下用这种三个以上元素该如何写入字典呢?
回复
陈年椰子 2019-06-26
参考一下


import pandas as pd
a_list = [['a', 1],  ['a', 2],  ['b', 1],  ['b', 2],  ['b', 3]]
df = pd.DataFrame(a_list)
df.columns = ['ch','val']
gp=df.groupby(['ch']).apply(lambda t: t[t.val==t.val.max()])
for index, row in gp.iterrows():
    print(row[0],row[1])

回复
mzccvb 2019-06-26
引用 1 楼 陈年椰子 的回复:
意思是分组, 取最大?
是,当然还有一点就是我每个子维度中可能不止两个元素,可能是比如[a, 1, '123']之类的,但是我只需要按第一列查找相同的子列表然后按第二列排序
回复
陈年椰子 2019-06-26
意思是分组, 取最大?
回复
相关推荐
发帖
脚本语言
创建于2007-08-27

3.7w+

社区成员

JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
申请成为版主
帖子事件
创建了帖子
2019-06-26 03:00
社区公告

CSDN 脚本语言社区接受专栏投稿(专栏会在顶部创建专属你的栏目),投稿需满足以下要求:

  • 脚本语言技术相关;
  • 文章持续更新,保持活跃;
  • 内容清晰明了,干货为主;
  • 文章排版有序,有条有理。

本社区开通招聘专栏,发布招聘信息请联系版主,发布者需要保证招聘信息真实有效,CSDN 平台和版主不对招聘内容负责!

联系方式:私聊版主、发送邮件、QQ联系等均可: