2017-12-25 24 views
-1

私は辞書を使ってループを作成し、すべての行の最初の浮動小数点値を出力しようとしていますが、その値だけを選ぶ方法はわかりません。Python辞書をループする場合

私の辞書:私はそれらの値を合計する

また
123.4 
567.8 
91011.12 

{'abc': 123123, 'defg': [ 
    ['123.4', '10'], 
    ['567.8', '10'], 
    ['91011.12', '10'] 
]} 

私は出力になりたいです。ルーピングなしでSUMメソッドで簡単に行う方法はありますか?

ありがとうございました!私は本当にこれで失われています。

+0

は、しかし、 ' 'abc''の項目がリストではありません(リストのリストでもない)リストのリストである辞書の項目のみを処理すべきか?何を試しましたか? –

+0

[sum](https://docs.python.org/3/library/functions.html#sum)関数を見たことがありますか? – Jerfov2

+0

'sum(mydict ['defg']のxのx [0])' – Jerfov2

答えて

-1

あなたはより多くの機能液のためreduceを使用することができます。

import re 
import itertools 
from functools import reduce 
s = {'abc': 123123, 'defg': [ 
['123.4', '10'], 
['567.8', '10'], 
['91011.12', '10'] 
]} 
new_s = list(itertools.chain(*[[float(c) for c in itertools.chain(*b) if re.findall('^\d+\.\d+$', c)] for a, b in s.items() if isinstance(b, list)])) 
print(new_s) 
print(reduce(lambda x, y:x+y, new_s)) 

出力:

[123.4, 567.8, 91011.12] 
91702.32 
0

[OK]を、私はそれを得たと思います。 Ajax1234とJerfov2のヒントありがとう!

ループと印刷のために
s = {'abc': 123123, 'defg': [ 
['123.4', '10'], 
['567.8', '10'], 
['91011.12', '10'] 
]} 

for x in s['defg']: 
    print(x[0]) 

出力:

123.4 
567.8 
91011.12 

そして、forループとの合計:

summed = 0 
for x in s['defg']: 
    summed = summed + float(x[0]) 
print("%.2f" % summed) 

出力:

0123非常にここで、Pythonで任意の機能的なアプローチだけで糖衣構文で終わり
91702.32 
0

は、非機能形で私の2セントです:

import ast 
import itertools 

s = {'abc': 123123, 'defg': [ 
    ['123.4', '10'], 
    ['567.8', '10'], 
    ['91011.12', '10'] 
]} 

def str_is_float(value): 
    if isinstance(value, str): 
     value = ast.literal_eval(value) 
    if isinstance(value, float): 
     return True 
    else: 
     return False 

def get_floats(d): 
    for k, v in d.items(): 
     if isinstance(v, list): 
      for n in itertools.chain.from_iterable(v): 
       if str_is_float(n): 
        yield float(n) 
     elif str_is_float(v): 
      yield float(v) 

floats = list(get_floats(s)) 

# Print all the floats 
print(floats) 
# sum the floats 
print(sum(x for x in floats)) 
関連する問題