[英]How to get and use values from a dict of a list of tuples
我有一個元組列表的字典:
adict = {'alpha': [('0', 'beta'), ('1', 'beta')],
'beta': [('0', 'alpha'), ('1', 'alpha')]}
和值列表:
alist = ['alpha', '0', '1', '0']
blist = ['beta', '0', '1', '0', 'x']
我希望能夠使用第一個索引作為鍵來搜索字典,然后使用列表中的數字來搜索元組並將匹配的元組(與元組的第一個元素)附加到最終的值中名單。 我不知道我是否足夠清楚,但最終我想要最終的清單
final_list = [ ['alpha', ('0', 'beta'), ('1', 'beta'), ('0', 'beta')],
['beta', ('0', 'alpha'), ('1', 'alpha'), ('0', 'alpha'), ('x': None)] ]
它是一種多級搜索。 我該如何處理?
首先創建一個臨時字典,其中adict
的值是字典本身。 然后使用列表推導來獲得所需的列表。
>>> temp_adict = {k:dict(v) for k, v in adict.items()}
>>> [ lis[:1] + [(x, temp_adict[lis[0]].get(x)) for x in lis[1:]]
for lis in [alist, blist]]
[['alpha', ('0', 'beta'), ('1', 'beta'), ('0', 'beta')],
['beta', ('0', 'alpha'), ('1', 'alpha'), ('0', 'alpha'), ('x', None)]]
這種丑陋的事情在一條線上做到了......小心,這很難看!
solution = [[alist[0]] + [(key, adict[alist[0]][index][1]) for key in alist[1:] for index in xrange(len(adict[alist[0]])) if adict[alist[0]][index][0] == key]] + [[blist[0]] + [(key, adict[blist[0]][index][1]) for key in blist[1:] for index in xrange(len(adict[alist[0]])) if adict[alist[0]][index][0] == key]]
它也不是很干,只要在一行中完成工作,如果這無關緊要
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.