从Python的嵌套列表中获取值

时间:2019-02-26 08:43:24

标签: python

我要求输入的值是产品的ID。 我想要的是带有该ID(最后一个数字)的产品的价格。

产品代码:

producto=[[0, "Patata", "PatataSL", 7], [1, "Jamon", "JamonSL", 21], [2, "Queso", "Quesito Riquito", 5], [3, "Leche", "Muu", 4], [4, "Oro", "Caro", 900], [5, "Zapatos", "Zapatito", 56], [6, "Falda", "Mucha ropa", 34]]
def productos():
    respuesta=True
    while respuesta:
        print ("""
        1.Mostrar Productos
        2.Salir al menu
        """)
        respuesta=input("Introduzca la opcion ") 
        if respuesta=="1":
            for r in producto:
                for c in r:
                    print(c, end = " ")
                print()
        elif respuesta=="2":
            import menu
        elif respuesta !="":
          print("\n No ha introducido un numero del menu") 

购物代码:

import clientes
import productos
def compras():
    respuesta=True
    while respuesta:
        print ("""
        1.Comprar
        2.Salir al menu
        """)
        respuesta=input("Introduzca la opcion ") 
        if respuesta=="1":
            i = int(input("Introduzca el id del cliente: "))
            if i in (i[0] for i in clientes.cliente):
                print("El cliente está en la lista")
            else:
                print("El cliente no está en la lista")
                compras()
            p = int(input("Introduzca el id del producto: "))
            if p in (p[0] for p in productos.producto):
                print("El producto esta en stock")

这些是我一直在尝试的事情,但是我得到一个错误代码:TypeError:'int'对象不可下标。

for j in productos.producto:
                    for p in j:
                        print (str(p[3]))
                #print("El producto cuesta: " + str(p[p][3]))

最后没问题。

else:
                print("El producto no esta en stock")
                compras()           
        elif respuesta=="2":
          import menu
        elif respuesta !="":
          print("\n No ha introducido un numero del menu") 

4 个答案:

答案 0 :(得分:1)

您可以通过简单地添加一组额外的方括号来获得嵌套项,因此对于第一个嵌套列表中的7producto[0][3]

答案 1 :(得分:0)

您可以将列表中的最后一个元素称为第-1个元素。

for productList in producto:
    if respuesta == productList[0]:
        print('Price:', productList[-1])

答案 2 :(得分:0)

我假设您需要根据ID打印产品价格。

producto=[[0, "Patata", "PatataSL", 7], [1, "Jamon", "JamonSL", 21], [2, "Queso", "Quesito Riquito", 5], [3, "Leche", "Muu", 4], [4, "Oro", "Caro", 900], [5, "Zapatos", "Zapatito", 56], [6, "Falda", "Mucha ropa", 34]]

我假设,索引0为id,索引3为Price。

product_id = 0 //user input
for v in producto:
   if v[0] == product_id:
       print(v[0][3])

您需要给出价格指数

答案 3 :(得分:0)

如果有可能,最好在classnamed tuple中看到这种结构化数据。

这样,您不仅可以获得始终知道自己正在访问什么的好处。但是弄清楚如何访问它很简单。

考虑以下代码:

class Product():
    def __init__(self, amount, name, something, price):
        self.amount = amount
        self.name = name
        self.something = something
        self.price = price


producto=[
    Product(0, "Patata", "PatataSL", 7), Product(1, "Jamon", "JamonSL", 21),
    Product(2, "Queso", "Quesito Riquito", 5), Product(3, "Leche", "Muu", 4),
    Product(4, "Oro", "Caro", 900), Product(5, "Zapatos", "Zapatito", 56),
    Product(6, "Falda", "Mucha ropa", 34)
]

print(producto[0].price)

这看起来可能需要更多的精力,但是如果您打算使用嵌套数组和非结构化数据来制作一个大型的,甚至稍微复杂的程序,您会发现自己不断遇到类似于当前遇到的问题。

也就是说,答案是:

for j in productos.producto:
    print (str(j[3]))

您的嵌套数组太深了。