如何通过只调用第一个元素来获得嵌套在列表中的某些元组?


noodles = [(‘Samyang’, ‘Korea’, ’50’), (‘Nissin Cup Noodle’, ‘Japan’, ’70’), (‘Jin Mai Lang’, ‘China’, ’40’)]

例如,我只想要日清杯面条。输出应该如下所示:

Nissin Cup Noodle, Japan, 70

听起来像是要根据第一个坐标在元组列表中查找特定项的索引。

noodles = [('Samyang', 'Korea', '50'), ('Nissin Cup Noodle', 'Japan', '70'), ('Jin Mai Lang', 'China', '40')]
names   = [item[0] for item in noodles]
index   = names.index('Nissin Cup Noodle')
print(noodles[index])

您可以使用列表推导式和[0]索引…

noodles = [(‘Samyang’, ‘Korea’, ’50’), (‘Nissin Cup Noodle’, ‘Japan’, ’70’), (‘Jin Mai Lang’, ‘China’, ’40’)]
nissan = 'Nissin Cup Noodle'
n_c_n = [(x, y, z) for x, y, z in noodles if x == nissan][0]

或for循环:

noodles = [(‘Samyang’, ‘Korea’, ’50’), (‘Nissin Cup Noodle’, ‘Japan’, ’70’), (‘Jin Mai Lang’, ‘China’, ’40’)]
nissan = 'Nissin Cup Noodle'
for noodle in noodles:
if noodle[0] == nissan:
n_c_n = noodle
break

但是你可能应该使用字典来代替,如果你想根据键找到元素,你可以用*将元组解包成一个包含键的元组,以得到你想要的所有三个元组:

noodles = {‘Samyang’: (‘Korea’, ’50’), ‘Nissin Cup Noodle’: (‘Japan’, ’70’), ‘Jin Mai Lang’: (‘China’, ’40’)}
nissan = 'Nissin Cup Noodle'
n_c_n = (nissan, *noodles[nissan])

您可以将元组中的值直接赋值给变量,并以这种方式打印它们:

for noodle_type, country, num in noodles:
print(f”{noodle_type}, {country}, {num}”)

如果你只想打印一个特定的元组,就在那里抛出if语句

for noodle_type, country, num in noodles:
if noodle_type == “whatever”:
print(f”{noodle_type}, {country}, {num}”)

最新更新