python中如何让一个list里的数字部分相加
比如['2D', '3S', '4D', 'QD', '0S', 'JD']
我想求每个单独元素的第一个的和该怎么弄(2,3,4,Q,0,J)
让Q=12,J=11,0=10
2+3+4+Q+0+J=2+3+4+12+10+11=32 展开
1、创建python文件,testsum.py;
2、编写python代码,初始化list内容;
dt = {"0": "10", "J": "11", "Q": "12"}
test = ['2D', '3S', '4D', 'QD', '0S', 'JD']
3、编写函数,进行list内容求和;
def func(li):
nums = []
result = 0
for index, s in enumerate(li):
tp = s[0]
if tp in dt:
nums.append(dt.get(tp))
li[index] = dt.get(tp)+s[1]
result += int(dt.get(tp))
else:
nums.append(tp)
result += int(tp)
print('单独出来的数字',nums)
print('转换后的求和值',result)
func(test)
4、右键选择‘在终端中运行Python文件’;
5、执行后查看执行结果,可以发现求和后数据值。
可以根据字符串切片操作,来剥离第一个数字和第二个字母
参考代码.我再次发给你吧
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# python 2.7
import re
def func(li):
nums = []
for index, s in enumerate(li):
tp = s[0]
if tp in dt:
nums.append(dt.get(tp))
li[index] = dt.get(tp)+s[1]
else:
nums.append(tp)
print "单独出来的数字",nums
print "修改出来的数据",li
dt = {"0": "10", "J": "11", "Q": "12"}
test = ['2D', '3S', '4D', 'QD', '0S', 'JD']
func(test)
输出
单独出来的数字 ['2', '3', '4', '12', '10', '11']
修改出来的数据 ['2D', '3S', '4D', '12D', '10S', '11D']
楼主你好!
重要的计算逻辑都写在代码中了,请参考:
# -*- coding: utf-8 -*-
'''数据准备'''
trans_map = {'Q': 12, 'J':11, '0': 10}
target_list = ['2D', '3S', '4D', 'QD', '0S', 'JD']
sum_value = 0
for single_str in target_list:
'''取出列表中数字的第一个'''
operate_num = single_str[0]
'''如果需要转换,则按转换规则取数
否则,直接求和'''
if trans_map.has_key(operate_num):
sum_value += trans_map[operate_num]
else:
sum_value += int(operate_num)
'''打印结果'''
print sum_value
如有问题,欢迎追问,望采纳,谢谢!