Python如何判断变量类型 检查列表元组是否包含指定键
Python二元组列表相关问题解答
1. 输出对应的数据类型说明
你打印的两类输出不属于Python原生数组,是两层嵌套的内置序列结构:
- 最外层是
list(列表):Python中最常用的有序可变类数组结构,元素可以是任意类型,支持增删改查操作 - 列表内的每个元素是
tuple(元组):有序不可变序列,这里的每个元组都是固定的(键名, 键值)二元组,属于键值对的列表化存储形式。
Python本身没有其他静态语言内置的固定类型、固定长度的数组类型,日常开发中提到的类数组结构默认指列表;如果需要使用严格数组,需要导入array标准库或第三方数值计算库numpy创建对应数组对象。
你给出的两类输出对应代码定义如下:
# 输出1 output1 = [('id', 'fs-idm205005536'), ('type', 'A')] # 输出2 output2 = [('id', 'import-auto-t546'), ('data-mark-prefix', '('), ('data-mark-suffix', ')'), ('data-number-style', 'lower-alpha')]
2. 检查指定键名是否存在的实现方法
你之前编写的检测代码逻辑错误:key_to_lookup in Fruits 是直接判断列表中是否存在和key_to_lookup完全相等的元素,但列表内的元素都是二元元组,并非单独的字符串键名,因此永远无法得到正确匹配结果。
以下是两种可直接运行的正确实现:
方法1:遍历匹配元组键位
逻辑直观,适合初学者理解:
Fruits = [('id', 'testing'), ('type', 'A')] key_to_lookup = 'type' is_exist = False for kv_pair in Fruits: # 二元元组的0号索引存储键名,1号索引存储对应值 if kv_pair[0] == key_to_lookup: is_exist = True break print("Key exists" if is_exist else "Key does not exist")
方法2:转字典后直接判断
如果后续需要频繁按键取值,可以直接将二元组列表转为Python字典,查找效率更高,代码更简洁:
Fruits = [('id', 'testing'), ('type', 'A')] fruit_map = dict(Fruits) key_to_lookup = 'type' if key_to_lookup in fruit_map: print("Key exists") # 取对应值直接使用 fruit_map[key_to_lookup] 即可 else: print("Key does not exist")
注意:Python3中
print "Key exists"是Python2的废弃语法,在Python3环境运行会直接抛出语法错误。
内容的提问来源于stack exchange,提问作者Sri
相关产品推荐
相关产品推荐

