2024-09-27 09:22:16 发布
网友
我有一个从查询中获取的元组,但是我没有使用Python的经验,所以我不知道正确/最好的方法来实现这一点。元组是这样的:
现在我需要像result.getItemWithKey('111.111.5.1')这样的东西,它返回单个数组对象或逗号分隔的字符串(因为它更有用),比如'object 111 111.111.5.1'
result.getItemWithKey('111.111.5.1')
结果是一个元组的元组,因此可以使用如下索引访问它:
>>> result[0] ('object1', '111.111.5.1') >>> result[0][0] 'object1' >>> result[0][1] '111.111.5.1'
您可以在Pythonofficial docs中阅读更多关于元组(和其他数据结构)的信息
所以你的函数可以是这样的:
def get_item(result, key): for obj, num in result: if num == key: return obj, num
通过遍历列表并检查每个元组的第二个项(这是您的键)的值,可以在结果列表中搜索特定元组:
results = [('object%d' % i, '111.111.5.%d' % i) for i in range(1,8)] key = '111.111.5.4' result = None for t in results: if t[1] == key: result = t print result
输出:
('object4', '111.111.5.4')
这演示了如何使用基于零的索引访问元组中的项(在本例中,1表示第二个元素)。如果在for循环中解包元组,代码将更具可读性:
for obj, value in results: if value == key: result = (obj, value)
如果将结果转换为字典,则其通常更有用:
>>> results_dict = {v:k for k,v in results} >>> print results_dict['111.111.5.6'] object6 >>> print results_dict['111.111.5.1'] object1 >>> print results_dict['blah'] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'blah' >>> print results_dict.get('111.111.5.5') object5 >>> print results_dict.get('123456') None
使用dict.get()与您在问题中请求的语法很接近。
dict.get()
您可以将输入元组转换为字典并从中访问键。类似的东西(仅在Python3中测试,因此您可能需要做一些更改才能使用Python2.7运行)
from collections import defaultdict mytuples = (('object1', '111.111.5.1'), ('object2', '111.111.5.1'), ('object3', '111.111.5.3'), ('object4', '111.111.5.4'),) mydict = defaultdict(list) for name, key in mytuples: mydict[key].append(name) for key, values in mydict.items(): print(key, values)
111.111.5.1 ['object1', 'object2'] 111.111.5.3 ['object3'] 111.111.5.4 ['object4']
结果是一个元组的元组,因此可以使用如下索引访问它:
您可以在Pythonofficial docs中阅读更多关于元组(和其他数据结构)的信息
所以你的函数可以是这样的:
通过遍历列表并检查每个元组的第二个项(这是您的键)的值,可以在结果列表中搜索特定元组:
输出:
这演示了如何使用基于零的索引访问元组中的项(在本例中,1表示第二个元素)。如果在for循环中解包元组,代码将更具可读性:
如果将结果转换为字典,则其通常更有用:
使用
dict.get()
与您在问题中请求的语法很接近。您可以将输入元组转换为字典并从中访问键。类似的东西(仅在Python3中测试,因此您可能需要做一些更改才能使用Python2.7运行)
输出:
相关问题 更多 >
编程相关推荐