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解释添加了