python - 无法将元组项与列表项匹配

标签 python list loops dictionary

我有一个整数列表(标签)。我想将列表项映射到字典(类)的值项,并获取相应的字典键作为输出。

我正在使用:

h = classes.items()
for x in tags:
    for e in h:
        # print x, e,  # uncomment this line to make a diagnosis
        if x == e[1]:
            print e[0]
        else:
            print "No Match"

Classes 是字典。 Tags 是包含我想要与类映射的项目的列表。当我运行这段代码时,我在输出中得到 2616 次 No Match

2616 = 8 (no. of tuples)*327 (no. of items of tags list)

最佳答案

如果我明白你想做什么,也许这会有所帮助

>>> tags
['0', '2', '1', '3', '4', '7', '2', '0', '1', '6', '3', '2', '8', '4', '1', '2', '0', '7', '5', '4', '1']
>>> classes
{'Tesla': 7, 'Nissan': 0, 'Honda': 5, 'Toyota': 6, 'Ford': 1, 'Mazda': 4, 'Ferrari': 2, 'Suzuki': 3}

tags 是一个字符串列表,而不是整数 - 所以让我们将它转​​换为一个整数列表。

>>> tags = map(int, tags)

classes 是 car 到 int 的字典映射,但我们想使用值作为查找。我们可以反转字典(交换键和值)

>>> classes_inverse = {v: k for k, v in classes.items()}

现在这就是 tagsclasses_inverse 的样子

>>> tags
[0, 2, 1, 3, 4, 7, 2, 0, 1, 6, 3, 2, 8, 4, 1, 2, 0, 7, 5, 4, 1]
>>> classes_inverse
{0: 'Nissan', 1: 'Ford', 2: 'Ferrari', 3: 'Suzuki', 4: 'Mazda', 5: 'Honda', 6: 'Toyota', 7: 'Tesla'}

现在我们可以为列表中的每个项目收集逆向字典的值。

>>> [classes_inverse.get(t, "No Match") for t in tags]
['Nissan', 'Ferrari', 'Ford', 'Suzuki', 'Mazda', 'Tesla', 'Ferrari', 'Nissan', 'Ford', 'Toyota', 'Suzuki', 'Ferrari', 'No Match', 'Mazda', 'Ford', 'Ferrari', 'Nissan', 'Tesla', 'Honda', 'Mazda', 'Ford']

关于python - 无法将元组项与列表项匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36395253/

相关文章:

Python:图的断开组件中的所有最短路径

PHP:以 OOP 方式搜索 CSV 文件

python - 从具有多个参数的函数创建具有单个参数的函数的最佳方法是什么?

python - 发布 JSON 和 python Flask - 使用 Werkzeug 调试器的任何技术?

python - 如何使用列表推导式在 python 中打印长方体所有可能尺寸的列表?

c# - 使用 WHERE 条件返回文件列表的最短方法

javascript - 如何通过数组无限循环切换类列表?

vb.net - 在VB.NET中如何循环直到用户输入的变量为整数?

python - 从给定长度和宽度的一维列表创建二维列表?

c# - List<>.OrderBy() 是否检查列表是否已排序?