2016-04-11 10 views
-6

に変数を追加するこんにちは、私は私はいくつかの変数を追加する必要がありますが、私はエラーPythonはリスト

a.append ({'Name': + Name + ',' + 'number'+ ':' + Number}) 
TypeError: bad operand type for unary +: 'str' 

に完全なコードを取得しておくリスト

a = [{'Name': 150,'number': 100},{'Name': 190, 'number': 200},{'Name': 190, 'number': 300}] 

を持って、この作業を取得するように見えることはできません:

a = [{'Name': 150,'number': 100},{'Name': 190, 'number': 200},{'Name': 190, 'number': 300}] 
    Name = '150' 
    number = '10' 

    a.append ({'Name': + Name + ',' + 'number'+ ':' + Number}) 


    def get_number(name): 
      return lambda x: x['number'] if x['Name']==name else 0 

    names = sorted(set(map(lambda x: x['Name'], a))) 
    result = [{'Name':name,'number':sum(map(get_number(name), a))} for name in names] 

    string = str(result) 
    remove = "[{}],'" 
    for i in range (0,len(remove)): 
      string =string.replace(remove[i],"") 
    b = string 

    print b 

このリストにデータを追加するにはどうすればよいですか?

+2

リストを文字列に変換してから、文字列操作を使用してアイテムを削除するのはなぜですか? – ThiefMaster

+0

私は名前と番号を取得しているので、私はリストに変換しています。 samesの名前を追加する必要がありますので、名前の合計が表示され、xml要素に追加されます – user2433624

答えて

2

辞書を追加しようとしています。これは動作するはずです:

a.append({'Name': Name, 'number' : Number}) 

をあなたが採用執筆のスタイルは、いくつかの非常にかわいい直感を採用し、それがどのようにこの作品ではありません:)辞書が自動的に他のものがレイアウトされている方法で自分自身をフォーマットします、あなただけに必要正しいキーと値を入力してください。

あなたがエラーを受けた理由は、あなたが前に入れた:です。それはあなたが辞書を使っていることをPythonに伝えますが、その直後に+を入れます。今Pythonは右を見て、文字列を見て、 "さて、あなたはお互いに2つの文字列を追加しようとしています"と思って、左を見て、文字列ではないコロンを見ます。 Pythonは混乱しています。左に文字列として解釈できるものが必要です。そうでなければ、これはうまくいきません。だから、エラーを投げます。

:単項演算子の修正については、@PM 2Ringのコメントを参照してください。

+1

"は左にあり、文字列ではないコロンが表示されます"。パーザはすでにコロンを処理していますが、現在は '' Name ''キーに関連付ける値を構築するための有効な式を探しています。'+'を総和演算子として解釈しようとしません(文字列では文字列連結を意味します)、それを[単項式陽性]として解釈します(https://en.wikipedia.org/wiki/Unary_operation#Unary_negative_and_positive)演算子(エラーメッセージの状態として)、その演算子は文字列に対して定義されていません。 –

+1

(続き)単項式は数字に対して定義されているので、 'a = + 5'や' a = + b'などのことができます。ここで 'b'は数字です。確かに、それはかなり役に立たないですが、 'a = -b'で対称です。単項演算子をパーサーに組み込むのは安いです。 :) –

1

あなたはここに+を使用する必要はありません。

a.append ({'Name': Name, 'number': Number}) 

+が文字列に参加したりするためにある:あなたがやったように、あなたが最初のaの値を宣言したときにだけ、キーの後に変数の値を置くことができます数字を追加しますが、ここでは辞書を作成しようとしています。それを行うための形式は次のとおりです。あなたが何も参加ではありませんので、

{"Key": value, "Another Key": value, ...} 

+兆候はあなただけのPythonの組み込みの構文を使用して辞書を作成している、必要とされていません。

+0

これは私が多くの助けをしてくれてありがとう。 – user2433624

0

あなたのコードでは、エラーが明白であり、また、TypeErrorがエラーの場所を明確に示しています。ステートメントで '+'を使用する必要はありません。

a.append({「名前」:名前、「数」:番号})

を「+」の文字列を追加するために使用され、あなたのケースであなたは、単に次のように見えるようにコードを編集変数に値を代入する。それが役に立てば幸い。 :)