首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从元组列表的字典中获取和使用值

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

Stack Overflow用户
提问于 2014-01-22 02:44:54
回答 2查看 98关注 0票数 0

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

代码语言:javascript
运行
复制
adict = {'alpha': [('0', 'beta'), ('1', 'beta')], 
         'beta': [('0', 'alpha'), ('1', 'alpha')]}

和一个值列表:

代码语言:javascript
运行
复制
alist = ['alpha', '0', '1', '0']
blist = ['beta', '0', '1', '0', 'x']

我希望能够使用第一个索引作为关键字来搜索字典,然后使用列表中的数字搜索元组,并将匹配的元组(带有元组的第一个元素)附加到最终的列表中。我不知道我是不是说得够清楚了,但最后我想要的是

代码语言:javascript
运行
复制
final_list = [ ['alpha', ('0', 'beta'), ('1', 'beta'), ('0', 'beta')],
               ['beta', ('0', 'alpha'), ('1', 'alpha'), ('0', 'alpha'), ('x': None)] ] 

这是一种多层次的搜索。我该如何解决这个问题呢?

EN

回答 2

Stack Overflow用户

发布于 2014-01-22 02:50:27

首先创建一个临时字典,其中adict的值是字典本身。然后使用列表理解来获得所需的列表。

代码语言:javascript
运行
复制
>>> 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)]]
票数 2
EN

Stack Overflow用户

发布于 2014-01-22 05:12:46

这个丑陋的东西只有一行……当心,它很难看!

代码语言:javascript
运行
复制
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]]

它也不是很干燥,只要在一行内完成工作,无论出于什么原因,这都很重要

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21266559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档