通过比较 python 中的字符串加权输出
Weighted output by comparing strings in python
我对 python 比较陌生,我对如何在这种情况下继续操作有疑问。我有来自 5 个来源的 5 个结果。每个来源都有一个数字权重。像 city1 到 city5 的权重分别为 2、2、1、1、2。 5个结果需要根据每个选项的权重之和,减少到3个或更少
在示例中,分配权重后的第 1 行的选项如下所示
NewYork - 2 + 1 = 3 (city1,city4)
Barcelona - 2 (city2)
Lisbon - 1 (city3)
London - 2 (city5)
输出必须是组合权重大于等于2的选项
即纽约、巴塞罗那、伦敦。
同样,第二行的输出应该是 London 和 NewYork
我应该能够处理多行数据。
示例:
City1 City2 City3 City4 City5
NewYork Barcelona Lisbon NewYork London
London NewYork Sydney Dublin London
希望此解决方案对您有所帮助
city={}
weight=[2,2,1,1,2]
with open('example.txt','r') as f:
lst=f.read().splitlines()
for line in lst[1:]:
innerList=line.split()
for index,element in enumerate(innerList):
if element in city:
city[element] += weight[index]
else:
city[element]= weight[index]
print city
最后,要选择出现次数最多的三个城市,请执行以下操作:
print sorted(city.iteritems(),key=lambda x:x[1],reverse=True)[:3]
我对 python 比较陌生,我对如何在这种情况下继续操作有疑问。我有来自 5 个来源的 5 个结果。每个来源都有一个数字权重。像 city1 到 city5 的权重分别为 2、2、1、1、2。 5个结果需要根据每个选项的权重之和,减少到3个或更少
在示例中,分配权重后的第 1 行的选项如下所示
NewYork - 2 + 1 = 3 (city1,city4)
Barcelona - 2 (city2)
Lisbon - 1 (city3)
London - 2 (city5)
输出必须是组合权重大于等于2的选项
即纽约、巴塞罗那、伦敦。
同样,第二行的输出应该是 London 和 NewYork
我应该能够处理多行数据。
示例:
City1 City2 City3 City4 City5
NewYork Barcelona Lisbon NewYork London
London NewYork Sydney Dublin London
希望此解决方案对您有所帮助
city={}
weight=[2,2,1,1,2]
with open('example.txt','r') as f:
lst=f.read().splitlines()
for line in lst[1:]:
innerList=line.split()
for index,element in enumerate(innerList):
if element in city:
city[element] += weight[index]
else:
city[element]= weight[index]
print city
最后,要选择出现次数最多的三个城市,请执行以下操作:
print sorted(city.iteritems(),key=lambda x:x[1],reverse=True)[:3]