2011-01-28 13 views
-2

私はPythonを初めて使い、リストの解説を理解しようとしているので、私のコードでそれを使うことができます。リストの理解をする、初心者

pricelist = {"jacket":15, "pants":10, "cap":5, "baseball":3, "gum":1} 

products_sold = [] 

while True: 
    product_name = input("what is the name of the product") 
    product = {} 
    customer_name = input("what is the name of the customer") 
    #customer is shopping 
    product[sell_price] = pricelist[product_name] 
    product["quantity"] = input("how many items were sold?") 
    #append the product to a dict 

    products_sold.append(product) 

今、私は次のようになります。トランザクション全体の辞書を持つようにしたい:

transaction = {"customer_name":"name", 
       "sold":{"jacket":3, "pants":2}, 
       "bought":{"cap":4, "baseball":2, "gum":"10"}} 

は、どのように私はリスト内包してキーと値を辞書を作成し、それを割り当てますでしょうか?私は例を見てきましたが、理解していますが、私のコードにそれらを適用する方法を理解することはできません。

私の意図は、製品のリストを別の方法で同じ情報を含むdicts(トランザクション)のリストにすることです。

+0

「製品」はdictですか? 'products_sold'は各エントリに1つのエントリを持つディクテーションのリストになりますか? – mikej

+0

あなたの質問には説明が必要です。あなたはあなたのループを何度か実行したいと思っているのですか?それが済んだら、 'customer_name'、' product'、 'products_sold'の内容からトランザクション辞書を作成します(' products_bought' 、 右?)。また、あなたは 'dict'と' list'を混乱させるようです。あなたは 'list '、すなわち' []。append() 'に追加します。 – Rodrigue

+0

'quantity_sold'と' 'Jenny''はどこから来たのですか? – nmichaels

答えて

2

あなたの本当の問題は、あなたがリスト内包を理解したいと思っていることに私は答えます。 IMOは、あなたがリスト内包表記を学ぶために投稿した例ではありません。ここでは、私が使用したいと思っている非常に簡単な例があります。これは、これをあなたが既に別の言語から知っているものに関連づけるのは簡単なはずですから。

# start with a list of numbers 
numbers = [1, 2, 3, 4, 5] 

# create an empty list to hold the new numbers 
numbers_times_two = [] 

# iterate over the list and append the new list the number times two 
for number in numbers: 
    numbers_times_two.append(number * 2) 

うまくいけば、上記のコードは理にかなっており、おなじみです。リスト内包表記を使ってまったく同じことができます。注意してください。同じ部分がすべてあり、ちょっと動きました。

numbers_times_two = [number * 2 for number in numbers] 

リストの内包表記は、単にリストのように角括弧を使用して、それは、この例では数字で反復可能な(リストのようなもの)を反復から新しいリストを作成します。

リストの理解を使って辞書を作成することについて質問したとき、リスト内包の仕組みを学ぶというコンテキストでは、実際には意味がありません。

これが役に立ちます。