为了账号安全,请及时绑定邮箱和手机立即绑定

Python中二维数组中的集合操作

Python中二维数组中的集合操作

慕姐4208626 2023-02-07 16:43:01
是否可以在 python 中对二维数组使用集合操作。例如,>>> a = [['a', 's'],          ['a', 'b'],          ['a', 's']]>>> print(set(a))Traceback (most recent call last):                                                                                                               File "main.py", line 5, in <module>                                                                                                            print(set(a))                                                                                                                                TypeError: unhashable type: 'list'它显示此错误。我需要一个输出{'a', 's'}, {'a', 'b'}。那么是否有可能以任何其他方法获得此输出。
查看完整描述

2 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

先压平:


a = [['a', 's'], 

     ['a', 's'], 

     ['a', 's']]

print(set(y for x in a for y in x))  # {'a', 's'}

编辑:从更新的问题中,先将其转换为元组,然后将最终输出转换为集合。请注意,集合并不总是像原始值那样排列。


a = [['a', 's'], 

    ['a', 'b'], 

    ['a', 's']]

print([set(y) for y in set(tuple(x) for x in a)])  # [{'a', 's'}, {'a', 'b'}]


查看完整回答
反对 回复 2023-02-07
?
慕的地10843

TA贡献1785条经验 获得超8个赞

根据您的澄清评论,您显然是在寻找不同的列表。


list对象在 Python 中不可散列,因为从本质上讲,它们是可变的,并且可以通过更改数据来更改它们的散列码。所以你想要/需要制作一个set可哈希对象。


a = [['a', 's'], 

...          ['a', 'b'], 

...          ['a', 's']]


>>> set(tuple(t) for t in a)  # << unique tuples made of arrays in 'a'

{('a', 's'), ('a', 'b')}


>>> [list(x) for x in set(tuple(t) for t in a)] # << list of lists, will be unique by set(...)

[['a', 's'], ['a', 'b']]


>>> [set(x) for x in set(tuple(t) for t in a)] # << further, unique elements of the unique lists in a

[{'s', 'a'}, {'b', 'a'}]

但是由于散列问题,set您无法实现。lists


查看完整回答
反对 回复 2023-02-07
  • 2 回答
  • 0 关注
  • 216 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号