Write a function that takes two arguments, and returns a new array populated with the elements **that only appear once, in either one array or the other, taken only once**; display order should follow what appears in arr1 first, then arr2: 

```python
hot_singles([1, 2, 3, 3], [3, 2, 1, 4, 5]) # [4, 5]
hot_singles(["tartar", "blanket", "cinnamon"], ["cinnamon", "blanket", "domino"]) # ["tartar", "domino"]
hot_singles([77, "ciao"], [78, 42, "ciao"]) # [77, 78, 42]
hot_singles([1, 2, 3, 3], [3, 2, 1, 4, 5, 4]) # [4,5]
```

SPECIAL THANKS: @JulianKolbe !

Source: codewars | Difficulty: EASY
Tags: Data structures

Starter code: def hot_singles(arr1, arr2):
	

Solutions:
def hot_singles(arr1, arr2):
	a = []
	for x in arr1 + arr2:
		if x in set(arr1) ^ set(arr2) and x not in a:
			a.append(x)
	return a


from collections import OrderedDict
from itertools import chain

def hot_singles(arr1, arr2):
	diff = set(arr1).symmetric_difference(arr2)
	return [a for a in OrderedDict.fromkeys(chain(arr1, arr2)) if a in diff]


def hot_singles(lst1, lst2):
	return sorted(set(lst1) ^ set(lst2), key=(lst1 + lst2).index)


def ordered(l, arr1, arr2):
	return [l, arr2.index(l) + len(arr1) if l in arr2 else arr1.index(l)]

def hot_singles(arr1, arr2):
	L = [ordered(l, arr1, arr2) for l in set(arr1) ^ set(arr2)]
	return list(map(lambda l: l[0], sorted(L, key=lambda l: l[1])))


def hot_singles(arr1, arr2):
	vals = arr1 + arr2
	return sorted(set(arr1).symmetric_difference(arr2), key=vals.index)


def hot_singles(arr1, arr2):
	result = []
	for i in arr1:
		if i not in arr2 and i not in result:
			result.append(i)
	for i in arr2:
		if i not in arr1 and i not in result:
			result.append(i)
	return result


hot_singles = lambda a, b: sorted(set(a) ^ set(b), key=(a + b).index)


hot_singles = lambda A, B: sorted(set(A) ^ set(B), key=(A + B).index)


def hot_singles(arr1, arr2):
	return sorted(set(arr1) ^ set(arr2), key=lambda x: (arr1 + arr2).index(x))