簡體   English   中英

對字典中的列表值使用sort和set()

[英]using sort and set() on list values in dictionary

我有一本字典,其中的單個值作為鍵,而列表則作為值。 我正在嘗試瀏覽字典值並刪除重復項並對列表進行排序。 林使用下面的代碼來嘗試這一點。

def activity_time_from_dict(adict):
    for v in adict.values():
        v = list(set(v))
        v.sort()

從循環內打印看來,它似乎是正確的,但是如果我看一下循環外的字典,它剛剛被排序,重復項仍然保留。 我想用已設置和排序的列表替換字典中的原始列表。 我究竟做錯了什么 ?

使用切片分配

 v[:] = list(set(v))
 # v[:] = set(v)  has the same effect

改變對象,而不僅僅是重新分配循環變量。 或更明顯的是,重新綁定到相同的密鑰:

for k in adict:
    adict[k] = sorted(set(adict[k]))
In [1]: dd = {'a':[1, 3, -5, 2, 3, 1]}

In [2]: for i in dd:sorted(list(set(dd['a'])))

In [3]: for i in dd:
    ...:     dd[i] = sorted(list(set(dd[i])))
    ...:     

In [4]: dd
Out[4]: {'a': [-5, 1, 2, ]}

你可以試試這個

def dict(adict):
    for v in adict.values():
        v = list(set(v))
        v.sort()
        return v

new_dict['your_key']=dict(old_dict)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM