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

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

如何先按第一列查重,然后再按第二列排序?得到[[a, 2], [b, 3]]的结果?
...全文
171 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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
  • 打赏
  • 举报
回复
意思是分组, 取最大?

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧