Ich versuche n Tabellen (Listen, die dicts enthält) zu kombinieren, wenn die gemeinsamen Schlüssel die gleichen Werte haben. Daher verwende ich * arg und zwei andere Tabellen. Mein Code arbeitete in Ordnung mit zwei Tischen, aber aus einem unbekannten Grund * senden Argumente nichts zurück. Mein CODE:kombinieren n dicts in einer Liste von dicts
def join(tbl1, tbl2, *args):
_dic = {}
_list = []
dictsOutOfArgs = []
for d in args:
dictsOutOfArgs.append(d)
for t1, t2 , arg in zip(tbl1, tbl2, dictsOutOfArgs):
for i , j , z in zip(t1, t2, arg):
if i == j == z and t1.get(i) == t2.get(j) == arg.get(z):
_dic = t1.copy()
_dic.update(t2)
_dic.update(arg)
_list.append(_dic)
return _list
if __name__ == '__main__':
import pprint
print(test_answer())
print(test_answer1())
series = [
{'s_id': 'bb', 'title': 'Breaking Bad'},
{'s_id': 'bcs', 'title': 'Better Call Saul'}]
characters = [
{'c_id': 'ww', 'family_name': 'White', 'given_name': 'Walter'},
{'c_id': 'sw', 'family_name': 'White', 'given_name': 'Skyler'},
{'c_id': 'sg', 'family_name': 'Goodman', 'given_name': 'Saul'}]
series_characters = [
{'c_id': 'ww', 's_id': 'bb'},
{'c_id': 'sw', 's_id': 'bb'},
{'c_id': 'sg', 's_id': 'bb'},
{'c_id': 'sg', 's_id': 'bcs'}]
x = join(series_characters, series, characters)
pprint.pprint(x)
erwartete Ausgabe:
[{'c_id': 'ww',
'family_name': 'White',
'given_name': 'Walter',
's_id': 'bb',
'title': 'Breaking Bad'},
{'c_id': 'sw',
'family_name': 'White',
'given_name': 'Skyler',
's_id': 'bb',
'title': 'Breaking Bad'},
{'c_id': 'sg',
'family_name': 'Goodman',
'given_name': 'Saul',
's_id': 'bb',
'title': 'Breaking Bad'},
{'c_id': 'sg',
'family_name': 'Goodman',
'given_name': 'Saul',
's_id': 'bcs',
'title': 'Better Call Saul'}]
Rückkehr ist: [] und ich denke, der Grund, dass argss ist keine Werte nicht haben, so kehrt die, wenn die Bedingung falsch ist.
irgendwelche Ideen?
aus dem Code, kann ich nicht sagen, was Sie versuchen zu erreichen. Kannst du erklären, was du willst? Es sieht so aus, als ob Sie erwarten, dass 'zip' einen natürlichen Join durchführt? – cmd
@PaulRooney verschmelzen n dicts, die die gleichen Schlüssel und die gleichen Werte haben – james
@cmd zip holt die dicts von den Listen heraus die andere für Schleife gitting die Schlüssel der dicts das if und was als nächstes kommt, was Ihr zu einem "natürlichen beitreten ", ich weiß nicht, wie hast du das verstanden :) – james