Ich habe dies:Erstellen eines Wörterbuch, dessen Schlüssel geben Multiplizitäten der Werte in einem Array eines Arrays auftretende
array1 = [[1,2,3],[1,2,3],[2,1,3],[2,1,3],[1,-2,3]]
array2 = [[1,2,3],[1,2,3],[1,2,3],[1,2,3],[0,2,3],[2,1,3]]
und wollen diese erstellen:
multiArray1 = {[1,2,3]:2, [2,1,3]:2}
multiArray2 = {[1,2,3]:4, [2,1,3]:1}
Frage: Ich versuche mich zu Machen Sie multiArray1 und multiArray2 als Wörterbücher, die dieselben Werte enthalten, aber die Schlüssel geben an, wie oft diese Werte in array1 bzw. array2 auftreten.
Ich bin mir nicht sicher, was ich in meinem Code ändern soll. Jede Hilfe würde sehr geschätzt werden. Vielen Dank. diese
from collections import defaultdict
array1 = [[1,2,3],[1,2,3],[2,1,3],[2,1,3],[1,-2,3]]
array2 = [[1,2,3],[1,2,3],[1,2,3],[1,2,3],[0,2,3],[2,1,3]]
def f(arrA,arrB):
multiArray1 = {}
multiArray2 = {}
intersect = set(map(tuple,arrA)).intersection(map(tuple,arrB))
print(set(map(tuple,arrA)).intersection(map(tuple,arrB)))
for i in intersect:
multiArray1.update({i:0})
multiArray2.update({i:0})
print(multiArray1)
print(multiArray2)
multipleArray1 = {}
multipleArray2 = {}
for i in intersect:
for j in range(len(arrA)):
if str(tuple(arrA[j])) in set(intersect):
multiArray1[tuple(arrA[j])].append(j)
print(multiArray1)
multipleArray1 = defaultdict(list)
for key, value in multipleArray1:
multipleArray1[i].append(j)
print(multipleArray1)
for j in range(len(arrB)):
if str(tuple(arrB[j])) in set(intersect):
multiArray2[tuple(arrB[j])].append(j)
multipleArray2 = defaultdict(list)
for key, value in multipleArray2:
multipleArray2[i].append(j)
print(multipleArray2)
print(multiArray1)
print(multiArray2)
f(array1,array2)
Die Ausgabe, die Sie aus dem obigen Code zu erhalten ist:
{(2, 1, 3), (1, 2, 3)}
{(2, 1, 3): 0, (1, 2, 3): 0}
{(2, 1, 3): 0, (1, 2, 3): 0}
{(2, 1, 3): 0, (1, 2, 3): 0}
{(2, 1, 3): 0, (1, 2, 3): 0}
Sie können keine Listen als Wörterbuchschlüssel haben - sie sind veränderbar -> nicht hashbar. – miradulo
Sie können 'list' nicht als Schlüssel für ein' dictionary' verwenden. –
{[1,2,3]: 2, [2,1,3]: 2} - das ist kein gültiges Diktat und kein Array! –