![](/img/trans.png)
[英]uniquify an array/list with a tolerance in python (uniquetol equivalent)
[英]Uniquify all pairs in a python list
我已經搜索了帖子,但找不到我遇到的確切問題的解決方案。 這很簡單,但需要一些指導。
我有一個看起來像的python列表:
lst = ['bob/sally', 'bob/chris', 'bob/nate', 'sally/bob', ...]
我想遍歷並僅打印唯一的對。 因此,在上面的示例中,它將發現bob / sally與sally / bob相同,因此將其刪除。
任何幫助將不勝感激! 我已經看到過使用set()和其他python函數的發布,但我認為在這種情況下不可行。
您可以使用一組,並通過對名稱進行排序來規范名稱的順序:
>>> data = ['bob/sally', 'bob/chris', 'bob/nate', 'sally/bob']
>>> set(tuple(sorted(item.split('/'))) for item in data)
set([('bob', 'chris'), ('bob', 'nate'), ('bob', 'sally')])
或正如Ignacio Vazquez-Abrams和mgilson所指出的那樣, frozenset的使用更為優雅,並且frozenset
了sorting和tuple()步驟:
set(frozenset(item.split('/')) for item in data)
我已經看到過使用set()和其他python函數的發布,但我認為在這種情況下不可行。
對我來說很好
>>> set([frozenset((x, y)) for (x, y) in [('bob', 'sally'), ('bob', 'nate'), ('sally', 'bob')]])
set([frozenset(['bob', 'sally']), frozenset(['bob', 'nate'])])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.