各位用户为了找寻关于python实现list元素按关键字相加减的方法示例的资料费劲了很多周折。这里教程网为您整理了关于python实现list元素按关键字相加减的方法示例的相关资料,仅供查阅,以下为您介绍关于python实现list元素按关键字相加减的方法示例的详细内容
本文实例讲述了python实现list元素按关键字相加减的方法。分享给大家供大家参考,具体如下:
Python list中的元素按关键字相加或相减:
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22# coding=utf-8
# 两个list按关键字相加或相减
def
ListAdd(list1, list2, bAdd
=
True
):
if
bAdd
=
=
False
:
list2
=
[(k,
-
v)
for
(k, v)
in
list2]
d
=
{}
list0
=
list1
+
list2
for
(k, v)
in
list0:
d.setdefault(k,
0
)
# 设置字典元素初始值
d[k]
+
=
v
# 对字典中的元素按关键字相加
ret
=
list
(d.items())
# 字典转换成list
ret
=
sorted
(ret)
# 对list排序
return
ret
if
__name__
=
=
'__main__'
:
a
=
[(
"s1"
,
10
), (
"s2"
,
13
), (
"s3"
,
25
), (
"s7"
,
30
)]
b
=
[(
"s1"
,
22
), (
"s3"
,
16
), (
"s10"
,
8
)]
print
(
"a="
, a)
print
(
"b="
, b)
ret1
=
ListAdd(a, b)
# ret1 = a + b
print
(
"ret1="
, ret1)
ret2
=
ListAdd(a, b,
False
)
# ret2 = a - b
print
(
"ret2="
, ret2)
运行:
? 1 2 3 4 5E:ProgramPython>
del
.py
a
=
[(
's1'
,
10
), (
's2'
,
13
), (
's3'
,
25
), (
's7'
,
30
)]
b
=
[(
's1'
,
22
), (
's3'
,
16
), (
's10'
,
8
)]
ret1
=
[(
's1'
,
32
), (
's10'
,
8
), (
's2'
,
13
), (
's3'
,
41
), (
's7'
,
30
)]
ret2
=
[(
's1'
,
-
12
), (
's10'
,
-
8
), (
's2'
,
13
), (
's3'
,
9
), (
's7'
,
30
)]
希望本文所述对大家Python程序设计有所帮助。