如何从列表元组字典中获取和使用值

2024-03-28 19:45:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个元组列表的字典:

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)] ] 

这是一种多层次的搜索。我该怎么做?你知道吗


Tags: alphanone元素列表字典数字listbeta
2条回答

这种丑恶的做法是一条线。。。。小心,它很丑!你知道吗

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]]

它也不是很干,只是在一行的工作,如果这是出于任何原因的问题

首先创建一个临时dict,其中adict的值是dictionary本身。然后使用列表理解得到所需的列表。你知道吗

>>> 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)]]

相关问题 更多 >