Python词典新词典的关键

时间:2017-02-13 08:14:35

标签: python dictionary set

我有一本字典和一套如下:

fundprices = {
'A' : 20,
'B' : 20,
'C' : 10,
'D' : 15,
'E' : 10,
'F' : 15,
'G' : 35,
'H' : 20,
'I' : 10,
'J' : 5
}

dollaramount = {
100000.0, 
100000.0, 
50000.0, 
300000.0, 
50000.0, 
100000.0, 
100000.0, 
150000.0, 
50000.0, 
0
}

我正在尝试创建第三个字典,该字典是由字典划分的集合的结果,具有以下代码:

orderamount = []

for i in fundprices.key(), dollaramount.key():
    orderamount.append(dollaramount[i] / fundprices[i])

print orderamount

orderamount与基金价格具有相同的关键字。但是,我得到'dict'对象没有属性因此。在这种情况下,dollaramount是从2个词典中的另一个计算创建的集合。如果在创建设置的dollaramount时更容易添加密钥,请告诉我。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

from collections import OrderedDict
fundprices = {
    'A' : 20,
    'B' : 20,
    'C' : 10,
    'D' : 15,
    'E' : 10,
    'F' : 15,
    'G' : 35,
    'H' : 20,
    'I' : 10,
    'J' : 5
    }

dollaramount = [
    100000.0, 
    100000.0, 
    50000.0, 
    300000.0, 
    50000.0, 
    100000.0, 
    100000.0, 
    150000.0, 
    50000.0, 
    0]
ordered_fundprices = OrderedDict(sorted(fundprices.items()))
for i, j in zip(ordered_fundprices.keys(), dollaramount):
    print i, j

for i, j in zip(ordered_fundprices.itervalues(), dollaramount):
    print j / i

你想要这样的结果吗?

A 100000.0
B 100000.0
C 50000.0
D 300000.0
E 50000.0
F 100000.0
G 100000.0
H 150000.0
I 50000.0
J 0
5000.0
5000.0
5000.0
20000.0
5000.0
6666.66666667
2857.14285714
7500.0
5000.0
0

答案 1 :(得分:0)

使用list而不是set作为dollaramount实际的目标,

set([0, 50000.0, 100000.0, 150000.0, 300000.0])

然后,我们有,

orderamount = [amount/t[1] for amount, t in zip(dollaramount, sorted(fundprices.items()))]

print(orderamount)
# [5000.0, 5000.0, 5000.0, 20000.0, 5000.0, 6666.666666666667, 2857.1428571428573, 7500.0, 5000.0, 0]

如果您想要一本能够记住首次插入密钥的字典,请使用collections.OrderedDict