Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 多维列表-通过公共字符串元素Y对整数元素X求和_Python_Arrays_Multidimensional Array - Fatal编程技术网

Python 多维列表-通过公共字符串元素Y对整数元素X求和

Python 多维列表-通过公共字符串元素Y对整数元素X求和,python,arrays,multidimensional-array,Python,Arrays,Multidimensional Array,我有一个多维列表: multiDimList = [['a',1],['a',1],['a',1],['b',2],['c',3],['c',3]] multiDimListSum = [['a',3],['b',2],['c',6]] 我试图对元素[1]的实例求和,其中元素[0]是常见的 更清楚地说,我想要的输出是另一个多维列表: multiDimList = [['a',1],['a',1],['a',1],['b',2],['c',3],['c',3]] multiDimListSu

我有一个多维列表:

multiDimList = [['a',1],['a',1],['a',1],['b',2],['c',3],['c',3]]
multiDimListSum = [['a',3],['b',2],['c',6]]
我试图对元素
[1]
的实例求和,其中元素
[0]
是常见的

更清楚地说,我想要的输出是另一个多维列表:

multiDimList = [['a',1],['a',1],['a',1],['b',2],['c',3],['c',3]]
multiDimListSum = [['a',3],['b',2],['c',6]]
我知道我可以访问,比如说
multiDimList
中的值“2”

x = multiDimList [3][1]
因此,我可以获取单个元素,并可能构建某种函数来完成这项工作,但这将是令人厌恶的


有人对如何进行pythonical操作有什么建议吗?

假设您的实际序列具有与示例中相似的分组元素(所有
'a'
'b'
等的实例一起),您可以使用和:


假设您的实际序列具有与示例中相似的分组元素(将
'a'
'b'
等的所有实例组合在一起),您可以使用和:


您可以使用
dict
来累加与每个字符串相关联的总数

d = {}
multiDimList = [['a',1],['a',1],['a',1],['b',2],['c',3],['c',3]]
for string, value in multiDimList:
    # Retrieves the current value in the dict if it exists or 0
    current_value = d.get(string, 0) 
    d[string] += value
print d # {'a': 3, 'b': 2, 'c': 6}

然后,您可以通过使用
d[“b”]
访问
b
的值。您可以使用
dict
累积与每个字符串相关的总数

d = {}
multiDimList = [['a',1],['a',1],['a',1],['b',2],['c',3],['c',3]]
for string, value in multiDimList:
    # Retrieves the current value in the dict if it exists or 0
    current_value = d.get(string, 0) 
    d[string] += value
print d # {'a': 3, 'b': 2, 'c': 6}

然后,您可以使用
d[“b”]
访问
b
的值。Zero Piraeus的回答涵盖了按顺序分组字段条目的情况。如果他们不是,那么下面的内容是简短且合理有效的

from collections import Counter
reduce(lambda c,x: c.update({x[0]: x[1]}) or c, multiDimList, Counter())

这将返回一个集合,可通过元素名称访问。如果您喜欢将其作为列表,可以对其调用.items()方法,但请注意,即使在输入顺序一致的情况下,输出中标签的顺序也可能与输入中标签的顺序不同。

Zero Piraeus的回答涵盖了字段条目按顺序分组的情况。如果他们不是,那么下面的内容是简短且合理有效的

from collections import Counter
reduce(lambda c,x: c.update({x[0]: x[1]}) or c, multiDimList, Counter())

这将返回一个集合,可通过元素名称访问。如果您喜欢将其作为列表,可以对其调用.items()方法,但请注意,即使在输入顺序一致的情况下,输出中标签的顺序也可能与输入中标签的顺序不同。

您所说的恶心是什么意思,任何解决问题的方法都是合理的,只要能得到理想的结果。你当然是对的。只是我倾向于写糟糕的代码,作为一个没有经验的程序员,我很自嘲。我总是试着举例说明我试过的方法,但在这种情况下,我觉得我太离谱了。你说的恶心是什么意思,任何解决问题的方法都是合理的,只要得到了理想的结果。你当然是对的。只是我倾向于写糟糕的代码,作为一个没有经验的程序员,我很自嘲。我总是试着提供一些我已经试过的例子,但是在这个例子中,我觉得我太离谱了。正如你所预料的,我没有在我的例子中包括问题的所有细微差别。首先,我将你的回答与以下内容结合起来:正如你所预料的,我没有在我的示例中包含问题的所有细微差别。首先对我的列表进行排序,我将您的答案与以下内容结合起来:可能值得一提的是,
reduce()
不再是Python 3.x中内置的,必须从
functools
导入。但是是的,这是一个很好的解决方案,输入没有分组。可能值得一提的是,
reduce()
不再是Python 3.x中的内置项,必须从
functools
导入。但是,这是一个很好的解决方案,输入没有分组。