Python - 嵌套列表 - 有效检查

3

我有一个嵌套的列表和字符变量:

colors =    [
        ("r", [255,0,0]),
        ("g", [0,255,0]),
        ("b", [0,0,255]),
        ("y", [255,0,0]),
        ("p", [255,0,255])
            ]   

char_to_check="b"

我应该如何以最有效的方式检查以下内容:
1. 检查char_to_check是否存在于嵌套列表colors的索引中(r,g,b等)

2. 如果存在(char_to_check),则从colors提供此字符的值(例如255,0,0)
否则返回错误(任何类型)


使用一个以你的字符作为键的 dict :) - voiDnyx
2个回答

5
只需创建哈希表(或在Python中创建字典)。
colors_dict = dict(colors)

if char_to_check in colors_dict:
    rgb_values = colors_dict[char_to_check]
    # do something

非常准确的答案。这并不是重复,因为原帖作者不知道他的数据结构可以简单地转换为字典。 - Jean-François Fabre
@Jean-FrançoisFabre 是的。幸运的是,他已经将数据以正确的格式进行了实例化。 - hspandher
谢谢。运行完美。 - user8913714

1
虽然我喜欢@hspandher的答案,但根据使用情况,那个解决方案可能不是最有效的。如果您只需要在一个大列表中找到颜色值一次,那么直接循环比构建字典要高效几倍:
for c, v in colors[::-1]:
    if c == 'b':
        print(v) # <- do something or return the value
        break

UV 用于解释,只有在使用超过1次时构建字典才是有效的 :) - Jean-François Fabre

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接