我試圖結合n個表(包含字典的列表),如果常用鍵具有相同的值。因此我使用* arg和另外兩個表.my代碼工作正常與兩張桌子,但由於某些未知的原因*參數沒有返回。 我的代碼:將n個字符組合在一個列表中
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)
預期輸出:
[{'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'}]
回報是:[] ,我認爲原因是argss沒有任何價值,所以如果條件返回false。
有什麼想法?
從你的代碼,我不能告訴你要完成的任務。你能解釋你想要發生什麼嗎?它看起來像你期待'zip'執行自然連接? – cmd
@PaulRooney合併n個具有相同密鑰和相同值的字典 – james
@cmd zip從列表中獲取字典其他for循環字符串如果和接下來是什麼接下來你所提到的「自然加入「,我不知道你是如何理解:) – james