python - 我正在尝试计算字母数字列表的总和

标签 python regex

这是原始列​​表:

ticket_list=

["AI567:MUM:LON:014",

"AI077:MUM:LON:056",

"BA896:MUM:LON:067",

"SI267:MUM:SIN:145",

"AI077:MUM:CAN:060",

"SI267:BLR:MUM:148",

"AI567:CHE:SIN:015",

"AI077:MUM:SIN:050",

"AI077:MUM:LON:051",

"SI267:MUM:SIN:146"]

我正在尝试从中生成一个子列表,如下所示:

['AI077:077', 'AI077:077', 'AI077:077', 'AI077:077', 'AI567:567', 'AI567:567', 'BA896:896', 'SI267:267', 'SI267:267', 'SI267:267']

我已经成功 生成了列表,现在我正在尝试根据 **":" 之后的值计算排序列表的总和 **每个航类_no

预期输出:

[AI077:308, AI567:1134, BA896:896, SI267:801]

我的代码:

def find_passengers_per_flight():
    flight_name=[]
    flight_passenger=[]
   """
    In the list, details should be provided in the format:
    [flight_no:no_of_passengers, flight_no:no_of_passengers, etc.]."""


    for t in ticket_list:
        res=''
        res = re.search(r"[A-Z]*\d*|[a-z]*\d*",t).group()

        flight_name.append(res)

    for i in flight_name:

        new_str=''
        res2 = re.search(r"\d+",i).group()
        new_str+=':'+res2
        flight_passenger.append(i+new_str)


    print(sorted(flight_passenger))

我的输出:

['AI077:077', 'AI077:077', 'AI077:077', 'AI077:077', 'AI567:567', 'AI567:567', 'BA896:896', 'SI267:267', 'SI267:267', 'SI267:267']

最佳答案

使用 defaultdict 会更容易,如果您坚持将输出作为列表稍后转换它:

from collections import defaultdict

l = ['AI077:077', 'AI077:077', 'AI077:077', 'AI077:077', 'AI567:567', 'AI567:567', 'BA896:896', 'SI267:267', 'SI267:267', 'SI267:267']
d = defaultdict(int)

for e in l:
    name, number = e.split(':')
    number = int(number)
    d[name] += number

print(d)
#  defaultdict(<class 'int'>, {'AI077': 308, 'AI567': 1134, 'BA896': 896, 'SI267': 801})
print(['{}:{}'.format(k, v) for k, v in d.items()])
#  ['AI077:308', 'AI567:1134', 'BA896:896', 'SI267:801']

如果您使用的是 <= 3.6 的 Python,则不能保证输出总是以相同的顺序进行,我认为这无关紧要。

关于python - 我正在尝试计算字母数字列表的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53770975/

相关文章:

python - 将字典转换为数据帧的一列,同时将字典行名称保留在另一列中(python)

python - matplotlib.pyplot 问题 python

python - 使用计数器对象计算文件中的单词数

regex - 选择最长选项的正则表达式

javascript - 忽略第一个字符大小写的正则表达式

python - GridSearchCV 将为此运行多少种组合?

python - Tensorflow - 键盘中断是否关闭当前 session

regex - PHP 正则表达式环顾四周,匹配多次出现

javascript - 电子邮件正则表达式 - 排除指定集

python - 检查列表中的两个项目是否相同?