簡體   English   中英

如何獲取和使用元組列表的dict中的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM