我是靠谱客的博主 靓丽小甜瓜,最近开发中收集的这篇文章主要介绍python中字典和列表_python中复杂的列表和字典查找,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我有一个元组列表和一个列表字典如下.

# List of tuples

lot = [('Item 1', 43), ('Item 4', 82), ('Item 12', 33), ('Item 10', 21)]

# dict of lists

dol = {

'item_category_one': ['Item 3', 'Item 4'],

'item_category_two': ['Item 1'],

'item_category_thr': ['Item 2', 'Item 21'],

}

现在我想查找dol中任何列表中任何元素中存在的任何元组中的任何元素.如果满足此要求,那么我想将另一个变量添加到相应的元组.

目前我这样做如下(看起来非常低效和丑陋).我想知道实现这一目标的最有效和最简洁的方法.有什么可能性?

PS:我也希望在这样做的同时保持很多顺序.

merged = [x[0] for x in lot]

for x in dol:

for item in dol[x]:

if item in merged:

for x in lot:

if x[0] == item:

lot[lot.index(x)] += (True, )

解决方法:

首先,在dol结构中构建一组所有值:

from itertools import chain

dol_values = set(chain.from_iterable(dol.itervalues()))

现在,成员资格测试很有效,您可以使用列表理解:

[tup + (True,) if tup[0] in dol_values else tup for tup in lot]

演示:

>>> from itertools import chain

>>> dol_values = set(chain.from_iterable(dol.itervalues()))

>>> dol_values

set(['Item 3', 'Item 2', 'Item 1', 'Item 21', 'Item 4'])

>>> [tup + (True,) if tup[0] in dol_values else tup for tup in lot]

[('Item 1', 43, True), ('Item 4', 82, True), ('Item 12', 33), ('Item 10', 21)]

标签:python,dictionary,tuples,lookup,list

最后

以上就是靓丽小甜瓜为你收集整理的python中字典和列表_python中复杂的列表和字典查找的全部内容,希望文章能够帮你解决python中字典和列表_python中复杂的列表和字典查找所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部