根据不同的参数迭代列表
Iterating on a list based on different parameters
我再次寻求有关遍历列表的帮助。这是我这次遇到的问题:
我有这个table:
其中包含国家的各种组合及其相关贸易流量。
由于贸易是双向的,例如我的列表有一个 ALB-ARM 值(当年阿尔巴尼亚与亚美尼亚的贸易额),然后在列表下方有另一个 ARM-ALB 值(相反)。
我想将每对国家的这两个贸易值相加;我一直在尝试使用一些代码,但我很快意识到我的所有方法都是错误的。
我该如何设置?我觉得用循环太难了,用一些我什至不知道存在的函数会很容易。
Table 格式的示例数据:
from astropy.table import Table
country1 = ["ALB","ALB","ARM","ARM","AZE","AZE"]
country2 = ["ARM","AZE","ALB","AZE","ALB","ARM"]
flow = [500,0,200,300,90,20]
t = Table([country1,country2,flow],names=["1","2","flow"],meta={"Header":"Table"})
预期输出为:
trade = [700,90,700,320,90,320]
result = Table([country1,country2,flow,trade],names=["1","2","flow","trade"],meta={"Header":"Table"})
提前谢谢大家
也许这会有所帮助:
country1 = ["ALB","ALB","ARM","ARM","AZE","AZE"]
country2 = ["ARM","AZE","ALB","AZE","ALB","ARM"]
flow = [500,0,200,300,90,20]
trade = []
pairs = map(lambda t: '-'.join(t), zip(country1, country2))
flow_map = dict(zip(pairs, flow))
for left_country, right_country in zip(country1, country2):
trade.append(flow_map['-'.join((left_country, right_country))] + flow_map['-'.join((right_country, left_country))])
print(trade)
输出:
[700, 90, 700, 320, 90, 320]
我再次寻求有关遍历列表的帮助。这是我这次遇到的问题:
我有这个table:
其中包含国家的各种组合及其相关贸易流量。
由于贸易是双向的,例如我的列表有一个 ALB-ARM 值(当年阿尔巴尼亚与亚美尼亚的贸易额),然后在列表下方有另一个 ARM-ALB 值(相反)。
我想将每对国家的这两个贸易值相加;我一直在尝试使用一些代码,但我很快意识到我的所有方法都是错误的。
我该如何设置?我觉得用循环太难了,用一些我什至不知道存在的函数会很容易。
Table 格式的示例数据:
from astropy.table import Table
country1 = ["ALB","ALB","ARM","ARM","AZE","AZE"]
country2 = ["ARM","AZE","ALB","AZE","ALB","ARM"]
flow = [500,0,200,300,90,20]
t = Table([country1,country2,flow],names=["1","2","flow"],meta={"Header":"Table"})
预期输出为:
trade = [700,90,700,320,90,320]
result = Table([country1,country2,flow,trade],names=["1","2","flow","trade"],meta={"Header":"Table"})
提前谢谢大家
也许这会有所帮助:
country1 = ["ALB","ALB","ARM","ARM","AZE","AZE"]
country2 = ["ARM","AZE","ALB","AZE","ALB","ARM"]
flow = [500,0,200,300,90,20]
trade = []
pairs = map(lambda t: '-'.join(t), zip(country1, country2))
flow_map = dict(zip(pairs, flow))
for left_country, right_country in zip(country1, country2):
trade.append(flow_map['-'.join((left_country, right_country))] + flow_map['-'.join((right_country, left_country))])
print(trade)
输出:
[700, 90, 700, 320, 90, 320]