在元组中查找与名称对应的消息 Python
Find messages corresponding to a name in a tuple Python
我有一个任务,我在一个函数中读取一个文件,其中包含不同人之间的聊天记录。聊天看起来像这样:
Anna
Hello Everyone
Kalle
Hi there
Anna
Coffee break?
Pelle
Absolutely
Kalle
Sure
Anna
Great, see you downstairs in 5 minutes
我创建了一个函数,为名称和相应的消息创建元组,一个元组中有两行。它看起来像这样:
[('Anna', 'Hello Everyone'), ('Kalle', 'Hi there'), ('Anna', 'Coffee break?'),
('Pelle', 'Absolutely'), ('Kalle', 'Sure'), ('Anna', 'Great, see you downstairs in 5 minutes')]
所以,我现在想做的是创建另一个函数来查找属于例如安娜。因此,如果我在 运行 程序时输入“Anna”作为输入,我希望函数找到 Anna 写的所有消息,然后输出应该如下所示:
[Anna] --> Hello Everyone
[Anna] --> Coffee break?
[Anna] --> Great, see you downstairs in 5 minutes
有人知道我该如何解决这个问题吗?我已经尝试了不同的代码来在元组中找到我想要的东西,但不幸的是它不起作用。
简单循环?
l = [('Anna', 'Hello Everyone'), ('Kalle', 'Hi there'), ('Anna', 'Coffee break?'),
('Pelle', 'Absolutely'), ('Kalle', 'Sure'), ('Anna', 'Great, see you downstairs in 5 minutes')]
def find_by_name(name, l):
for msg in l:
if msg[0] == name:
print(f"[{name}] --> {msg[1]}")
find_by_name('Anna', l)
给出:
[Anna] --> Hello Everyone
[Anna] --> Coffee break?
[Anna] --> Great, see you downstairs in 5 minutes
这是一个简单的理解:遍历列表对。筛选出您想要的人名的消息。
[msg for person, msg in l if person == name]
如果您想要一个要求用户输入的程序,这里有一个选项。到目前为止,所有这些答案都非常相似。
您可以遍历列表中的元组,然后索引元组。如果 tpls 是您的 (name,msg) 对列表,那么 tpls[0]
会给您第一个元组。 tpls[0][0]
会在第一个元组中给出名称,tpls[0][1]
会在第一个元组中给出消息。
def find_msg(tpls):
name = input()
for tpl in tpls:
if tpl[0] == name:
print("[{}] -->".format(name),tpl[1])
find_msg(tpls)
我有一个任务,我在一个函数中读取一个文件,其中包含不同人之间的聊天记录。聊天看起来像这样:
Anna
Hello Everyone
Kalle
Hi there
Anna
Coffee break?
Pelle
Absolutely
Kalle
Sure
Anna
Great, see you downstairs in 5 minutes
我创建了一个函数,为名称和相应的消息创建元组,一个元组中有两行。它看起来像这样:
[('Anna', 'Hello Everyone'), ('Kalle', 'Hi there'), ('Anna', 'Coffee break?'),
('Pelle', 'Absolutely'), ('Kalle', 'Sure'), ('Anna', 'Great, see you downstairs in 5 minutes')]
所以,我现在想做的是创建另一个函数来查找属于例如安娜。因此,如果我在 运行 程序时输入“Anna”作为输入,我希望函数找到 Anna 写的所有消息,然后输出应该如下所示:
[Anna] --> Hello Everyone
[Anna] --> Coffee break?
[Anna] --> Great, see you downstairs in 5 minutes
有人知道我该如何解决这个问题吗?我已经尝试了不同的代码来在元组中找到我想要的东西,但不幸的是它不起作用。
简单循环?
l = [('Anna', 'Hello Everyone'), ('Kalle', 'Hi there'), ('Anna', 'Coffee break?'),
('Pelle', 'Absolutely'), ('Kalle', 'Sure'), ('Anna', 'Great, see you downstairs in 5 minutes')]
def find_by_name(name, l):
for msg in l:
if msg[0] == name:
print(f"[{name}] --> {msg[1]}")
find_by_name('Anna', l)
给出:
[Anna] --> Hello Everyone
[Anna] --> Coffee break?
[Anna] --> Great, see you downstairs in 5 minutes
这是一个简单的理解:遍历列表对。筛选出您想要的人名的消息。
[msg for person, msg in l if person == name]
如果您想要一个要求用户输入的程序,这里有一个选项。到目前为止,所有这些答案都非常相似。
您可以遍历列表中的元组,然后索引元组。如果 tpls 是您的 (name,msg) 对列表,那么 tpls[0]
会给您第一个元组。 tpls[0][0]
会在第一个元组中给出名称,tpls[0][1]
会在第一个元组中给出消息。
def find_msg(tpls):
name = input()
for tpl in tpls:
if tpl[0] == name:
print("[{}] -->".format(name),tpl[1])
find_msg(tpls)