Python 在不更改数据结构的情况下搜索列表列表中的元组元素
我想在列表列表中的元组中搜索用户输入Python 在不更改数据结构的情况下搜索列表列表中的元组元素,python,python-3.x,Python,Python 3.x,我想在列表列表中的元组中搜索用户输入 data = [[('tick1',12),4],[('tick2', 16),7],...] if user input: 'tick1' desired output:[('tick1',12),4] 如果我将列表更改为字典,则可以执行此操作: data = [[('tick1',12),4],[('tick2', 16),7]] data = dict(data) if not any('tick2' in x for x in data):
data = [[('tick1',12),4],[('tick2', 16),7],...]
if user input: 'tick1'
desired output:[('tick1',12),4]
如果我将列表更改为字典,则可以执行此操作:
data = [[('tick1',12),4],[('tick2', 16),7]]
data = dict(data)
if not any('tick2' in x for x in data):
print('not found')
else:
print('found:', x)
#Output
found: [('tick2', 16), 7]
但是如果我想维护列表类型,我该怎么做呢?您可以使用列表理解来迭代子列表,并检查x[0]中的用户输入,这是一个元组
data = [[('tick1',12),4],[('tick2', 16),7]]
user_input = 'tick1'
output = [x for x in data if user_input in x[0]]
# [[('tick1', 12), 4]]
您可以使用列表理解来迭代子列表,并检查x[0]中的用户输入,这是一个元组
data = [[('tick1',12),4],[('tick2', 16),7]]
user_input = 'tick1'
output = [x for x in data if user_input in x[0]]
# [[('tick1', 12), 4]]
您只需迭代列表中的所有元素:
for (name, num), other in data:
if name == user_input:
print("Found it!")
data = [[('tick1',12),4],[('tick2', 16),7]]
result = next( (item for item in data if item[0][0] == 'tick1'), "not found")
print(result) # [('tick1', 12), 4]
或者,如果你对理解感兴趣:
if any(True for (name, num), other in data if name == user_input):
# Or: if any(name == user_input for (name, num), other in data):
print("Found it!")
您只需迭代列表中的所有元素:
for (name, num), other in data:
if name == user_input:
print("Found it!")
data = [[('tick1',12),4],[('tick2', 16),7]]
result = next( (item for item in data if item[0][0] == 'tick1'), "not found")
print(result) # [('tick1', 12), 4]
或者,如果你对理解感兴趣:
if any(True for (name, num), other in data if name == user_input):
# Or: if any(name == user_input for (name, num), other in data):
print("Found it!")
您可以使用下一个函数获取第一个匹配项,并在项目不在列表中的情况下使用其默认参数:
for (name, num), other in data:
if name == user_input:
print("Found it!")
data = [[('tick1',12),4],[('tick2', 16),7]]
result = next( (item for item in data if item[0][0] == 'tick1'), "not found")
print(result) # [('tick1', 12), 4]
您可以使用下一个函数获取第一个匹配项,并在项目不在列表中的情况下使用其默认参数:
for (name, num), other in data:
if name == user_input:
print("Found it!")
data = [[('tick1',12),4],[('tick2', 16),7]]
result = next( (item for item in data if item[0][0] == 'tick1'), "not found")
print(result) # [('tick1', 12), 4]
收集第一项等于输入值的所有列表。然后检查是否找到尺寸
data = [[('tick1',12),4],[('tick12', 16),7], [('tick1', 11), 4]]
x = 'tick1'
search=[n for n in data for t in n[0] if t==x ]
if len(search) > 0:
print('found:', search)
else:
print('not found:', x)
Result: found: [[('tick1', 12), 4], [('tick1', 11), 4]]
收集第一项等于输入值的所有列表。然后检查是否找到尺寸
data = [[('tick1',12),4],[('tick12', 16),7], [('tick1', 11), 4]]
x = 'tick1'
search=[n for n in data for t in n[0] if t==x ]
if len(search) > 0:
print('found:', search)
else:
print('not found:', x)
Result: found: [[('tick1', 12), 4], [('tick1', 11), 4]]
@我选择名字:它对我有用。请试一试,让我知道抽签结果back@iamchoosinganame,否,因为x[0]是一个tuple@iamchoosinganame:没有。将tick2替换为tick12,然后看我编辑了我的原始评论,指出我在这一点上错了。@iamChoosingName:它对我有用。请试一试,让我知道抽签结果back@iamchoosinganame,否,因为x[0]是一个tuple@iamchoosinganame:没有。将tick2替换为tick12,然后我编辑了我的原始评论,指出我在这一点上是错的。注释消失了bc解释添加了注释消失了bc解释添加了