簡體   English   中英

如何在python中計算字典中值的差?

[英]How to calculate the difference of the values in a dictionary in python?

我有一本看起來像這樣的字典(為清楚起見,使用空格):

dic={'848613': [-0.22307240991541583, -0.46447953845401646, -0.1864029726690461, 
                -0.17906908521977213, -0.22246125262797634, -0.09472937955312179,
                -0.2884662396714418, -0.3703613161883342],
     '820434': [-0.09142433555202074, -0.15535959723873796, -0.1402251633128967,
                -0.2680956866863311, -0.2226923849088073, -0.28353898661065896, 
                -0.1501088752644665, -0.17976001111917592],
     '846353': [0.12422057244522786, 0.1500662052036628, 0.15781989503119326,
                0.176881049190539, 0.17090424661515094, 0.13956641689554858, 
                0.11129775606601039, 0.0794753207321874]}

我想計算同一鍵中兩個值之間的差異,例如,前兩個值之間的差異為0.241407128539。 到目前為止,我使用的代碼是:

x=[]
z=[]
l=0

for a in dic:
    x.append(dic[a])
y=list(itertools.chain.from_iterable(x))
a=0
b=1
d=len(y)-1
for c in range(d):
    z.append(y[a]-y[b])
    a+=1
    b+=1
print z

但是,當使用了一個鍵的所有值並將它們與下一個鍵組合后,該代碼將繼續。 這樣,它還可以計算鍵的最后一個值和下一個鍵的第一個值之間的差。 有沒有解決這個問題的好方法,還是我必須剔除所有錯誤的數字?

你是極大的過於復雜的代碼。 如果要減去每個列表的前兩個值,則直接在字典項上循環:

for key, values in dic.iteritems():
    print key, values[0] - values[1]

演示:

>>> dic={'848613': [-0.22307240991541583, -0.46447953845401646, -0.1864029726690461, 
...                 -0.17906908521977213, -0.22246125262797634, -0.09472937955312179,
...                 -0.2884662396714418, -0.3703613161883342],
...      '820434': [-0.09142433555202074, -0.15535959723873796, -0.1402251633128967,
...                 -0.2680956866863311, -0.2226923849088073, -0.28353898661065896, 
...                 -0.1501088752644665, -0.17976001111917592],
...      '846353': [0.12422057244522786, 0.1500662052036628, 0.15781989503119326,
...                 0.176881049190539, 0.17090424661515094, 0.13956641689554858, 
...                 0.11129775606601039, 0.0794753207321874]}
>>> 
>>> for key, values in dic.iteritems():
...     print key, values[0] - values[1]
... 
848613 0.241407128539
820434 0.0639352616867
846353 -0.0258456327584

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM