【发布时间】:2013-11-12 02:36:48
【问题描述】:
抱歉,问题太长了。 我在 Python 3.2 中有这样的字典:
d = {'Paul ': [5, Counter({'i': 1, 'in': 1, 't': 1, 'fa': 1, 'cr': 1})],
'Lisa ': [4, Counter({'f': 3, 'bo': 1})],
'Tracy ': [6, Counter({'sl': 3, 'fi': 1, 'an': 1, 'piz': 1})],
'Maria': [2, Counter({'t': 2})]}
我需要将键中第一个值的每个 Counter 值相乘,并将这些值附加到键中:
d2 = {'Paul': [5, {'i': (2, 10), 'in': (4, 20), 't': (3, 15), 'fa': (2, 10), 'cr': (2, 10)})],
'Lisa': [4, {'f': (3, 12), 'bo': (8, 32)})],
'Tracy': [6, {'sl': (3, 18), 'fi': (1, 6), 'an': (5, 30), 'piz': (2, 12)})]}
这样,在嵌套字典中,每个键都有一对数字:第一个数字是最初分配给该键的值,第二个数字是第一个数字相乘的结果在字典中的关键。如上所示,例如,嵌套在 Paul 中的键 i 在原始文件中的值为 1,在输出中该值附加了 10(10 是键 'i': 2 的值乘以 5 ,键'Paul' : 5, Counter({'i':2...的第一个值)。等等...
我尝试将其转换为元组:
for key, lst in d.items():
mult[key] = [lst[0], {k: (lst[0], float(v)/lst[0]) for k, v in lst[1].items()}]
但我得到了错误的结果,例如:
d2 = {'Paul ': [5, {'i': (5, 10), 'in': (5, 20), 't': (5, 15), 'cr: (5, 10}]...
其中每个键的原始值被乘法结果的第一个值替换。我真的尝试了不同的方法来解决这个问题,但无济于事。有没有人知道如何解决这个问题。我学习 Python 的速度非常慢,这将有很大帮助。谢谢!
【问题讨论】:
-
我真的不明白为什么
1值会在输出中更改为其他数字,但像 Lika 的f这样的其他数字保持不变。这些新数字从何而来?
标签: python-3.x dictionary tuples