我有两个不同的清单:
l1 = ['a','b','a','e','b','c','a','d']
l2 = ['t1','t2','t3','t4','t5','t6','t7','t8']
l1
和l2
的长度总是相同的。它们实际上是逻辑映射l1
中的每个项对应于l2
中的一个值。你知道吗
我想在l1
中识别不同的元素。我是用set
和list comprehension
做的,如下所示:
used = set()
distl1 = [x for x in l1 if x not in used and (used.add(x) or True)]
在这里,输出将是:
distl1 = ['a','b','e','c','d']
它只不过是每个不同元素的第一次出现。你知道吗
现在,我该如何构建一个列表distl2
,以便将输出作为l2
中与第一次出现的值相对应的值,即distl1
?你知道吗
distl2 = ['t1','t2','t4','t6','t8']
Python 3.6+
字典在python3.6+中排序,作为3.6中的实现细节,在3.7+中确认。所以在本例中,可以将} ^{} recipe ,也可以通过第三方^{} 或^{} 获得:
dict
与忽略重复项的iterable一起使用。要忽略重复项,可以使用^{Python 2.7
对于Python 2.7,可以使用^{} 而不是
dict
,其中字典没有顺序:我的想法是使用
OrderedDict
来构建一个对应于l1
和l2
元素的(键,值)对的映射,然后从该dict中提取values
作为列表。你知道吗注意:对于python3.7+用户:常规dict保证记住它们的键插入顺序,因此可以省略导入
OrderedDict
。你知道吗您也可以这样做:
相关问题 更多 >
编程相关推荐