我使用collections模块中的setdefault()函数生成两个tables/dict。第一个dict是从压缩的两个列表中创建的,其中第一个item元素成为键,第二个元素成为值,这样每个键可以有任意数量的值。有没有办法排除每个键的重复值?在
keylst = ['a','a','b','b','a','b']
vallst = [1,1,2,2,3,3]
zip = [('a',1),('a',1),('b',2),('b',2),('a',3),('b',3)]
result = a[1,1,3], b[2,2,3]
desired_result = a[1,3], b[2,3]
以下是我目前为止的代码:
^{pr2}$
理想情况下,如果您可以创建一个
OrderedSet
对象的字典,它将保持顺序和保证只有唯一的值同时添加到它。在不幸的是,Python没有这样的内置类,但是可以使用
OrderedDict
来代替它。使用set
(或dict
)的优点是成员资格检查的唯一性将比使用简单的list
来收集值更快。在我的意思是:
另外,这里有一个由raymondhettinger编写的
OrderedSet
recipe,你可以用上面的代码用OrderedDict
来模拟一个。在如果不关心顺序,可以将
setdefault
更改为另外,请记住,在添加
^{pr2}$defaultdict
之后,它被认为更易于编写相关问题 更多 >
编程相关推荐