我要改造它:
[('user1', 10),('user2',2),('user2',24),('user1',10),('user3',15),('user3',8)]
对它:
[('user2', 0.52), ('user3', 0.46), ('user1', 0.4)]
我需要添加值,按用户分组,应用 2% 的比率并按后代值排序。
我已经用库完成了解决方案,但我只想用条件来完成。我正在使用 jupyter 笔记本。
e = [('user1', 10),('user2',2),('user2',24),('user1',10),('user3',15),('user3',8)]
type(e)
users = ["user1","user2","user3"]
for u in users:
value = 0
for t in e:
user = t[0]
if user == u:
value = value + t[1]
finalValue = value* 0.02
我已经尝试了很多次来转换 "finalValue"
但我收到了消息
"'float' object is not iterable".
最佳答案
使用 collections.defaultdict
例如:
from collections import defaultdict
result = defaultdict(int)
data = [('user1', 10),('user2',2),('user2',24),('user1',10),('user3',15),('user3',8)]
for k, v in data:
result[k] += v
result = {k: v*0.02 for k, v in result.items()}
#or result = [(k, v*0.02) for k, v in result.items()]
print(result)
输出:
{'user2': 0.52, 'user3': 0.46, 'user1': 0.4}
关于python - 如何再次将其转换为元组键值列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56438915/