2015-02-11 3 views
1

, если у меня есть два списка (может быть с различным LEN):получить только уникальные элементы из двух списков питона

x = [1,2,3,4] 
f = [1,11,22,33,44,3,4] 

result = [11,22,33,44] 

им делать:

for element in f: 
    if element in x: 
     f.remove(element) 

им получать

result = [11,22,33,44,4] 
+0

Почему не '2' часть вашего вывода? FWIW, то, что вы делаете, это 'f - x', тогда как вы хотите' (f \ cup x) - (f \ cap x) ' –

ответ

0

Ваш метод не получит уникальный элемент «2». Как насчет:

list(set(x).intersection(f)) 
+0

Почти правильно, но вы получили его назад. Вместо этого попробуйте symmetric_difference(). – user3757614

+1

«Уникальные элементы из обоих списков» звучат как перекресток для меня. Участник должен уточнить. –

12

Если вы хотите уникальные элементы из обоих списков, это должно работать:

x = [1,2,3,4] 
f = [1,11,22,33,44,3,4] 

res = list(set(x+f)) 
print(res) 
# res = [1, 2, 3, 4, 33, 11, 44, 22] 
+0

Но это вообще не отвечает на вопрос ОП! – lifebalance

0
v_child_value = [{'a':1}, {'b':2}, {'v':22}, {'bb':23}] 
shop_by_cat_sub_cats = [{'a':1}, {'b':2}, {'bbb':222}, {'bb':23}] 


unique_sub_cats = [] 
for ind in shop_by_cat_sub_cats: 
    if ind not in v_child_value: 
     unique_sub_cats.append(ind) 

unique_sub_cats = [{ 'ГЭБ': 222}]

2

Основываясь на разъяснении этого вопроса в new (closed) question:

Если вы хотите, чтобы все элементы из второго списка, которые не появляются в первом списке вы можете написать:

x = [1,2,3,4] 
f = [1,11,22,33,44,3,4] 

result = set(f) - set(x) # correct elements, but not yet in sorted order 
print(sorted(result)) # sort and print 

# Output: [11, 22, 33, 44] 
0

, если вы хотите получить только уникальные элементы из два списка, то вы можете получить его. .

a=[1,2,3,4,5] 
b= [2,4,1] 
list(set(a) - set(b)) 
OP:- [3, 5] 
Смежные вопросы