【发布时间】:2015-04-08 05:40:23
【问题描述】:
我有 256 个函数作为 dicts 的列表,每个函数有 4 对,如下所示:
[{'a':'b', 'b':'c', 'c':'c', 'd':'a'}, ... ]
并且想做以下事情...
- 将函数应用于域中的每个元素 1 到 4 次。例如对于域中的元素 1,'a':
[f[a], f[f[a]], ..., f[f[f[f[a]]]]]
这会为 1 中的示例 dict/function 生成以下内容。
['b','c','c','c'] #for element a
['c','c','c','c'] #for element b
... etc. #for element c
#for element d
-
将矩阵/列表列表视为列。
4.然后,我想计算 col1、2、3 和 4 中元素 'a' 的数量。 并为每个域元素执行此操作。我希望能产生以下形式的东西:
[ [第 1 列中的 num 个,第 2 列中的 num,...], [第 1 列中的 b 数量,第 2 列中 b 的数量,...],等等 ]
对于 256 个函数/字典元素中的每一个。 最终输出应该类似于:
[ [[0,1,1,0],
[2,1,1,0],
[0,0,0,0],
[2,2,2,4]], .... 256 of these]
这是当前代码和当前输出:
domain = ['a','b','c','d']
allf = [{'a':'a','b':'c','c':'d', 'd':'d'}, {'a':'b', 'b':'c', 'c':'d', 'd':'a'}]
def dictfunky():
global dictfuncts
dictfuncts = []
for item in allf:
di = dict(item)
dictfuncts.append(di)
print(dictfuncts)
def functmatnoz():
global matlist
matlist = []
global elems
for f in dictfuncts:
elems = []
for element in domain:
forward = [f[element], f[f[element]], f[f[f[element]]], f[f[f[f[element]]]]]
forward.reverse()
back = forward
elems.append(back)
matlist.append(elems)
print(matlist)
def sigma():
global sigmamat
sigmamat = []
for element in domain:
sig = []
for column in matlist:
size = column.count(element)
sig.append(size)
sigmamat.append(sig)
print(sigmamat)
dictfunky()
functmatnoz()
sigma()
上面输出的第一位如下,主要问题当然是结果字符串 0,而不是我想要的列表计数列表:
输出:
>>> dictfunky()
[{'b': 'c', 'd': 'd', 'c': 'd', 'a': 'a'}, {'b': 'c', 'd': 'a', 'c': 'd', 'a': 'b'}]
>>> functmatnoz()
[[['a', 'a', 'a', 'a'], ['d', 'd', 'd', 'c'], ['d', 'd', 'd', 'd'], ['d', 'd', 'd', 'd']], [['a', 'd', 'c', 'b'], ['b', 'a', 'd', 'c'], ['c', 'b', 'a', 'd'], ['d', 'c', 'b', 'a']]]
>>> sigma()
[[0, 0], [0, 0], [0, 0], [0, 0]]
>>>
想要的:
sigma()
[
[[4,0,0,0], # num of a's in each col for funct 1
[0,0,0,0], # num of b's in each col for funct 1
[0,1,0,0], # num of c's in ....
[0,3,4,4]] ,
[[1,1,1,1], # num of a's in each col for funct 2
[1,1,1,1], # num of b's in each col for funct 2
[1,1,1,1], # etc.
[1,1,1,1]]
]
【问题讨论】:
-
请提供Minimal, Complete, and Verifiable example。同样在 Python 中,您所说的“256 个函数作为 dicts”只是 256 个 dicts 或映射,
f[a]不是在调用函数,而是将映射f应用到值a(或查找它的值在f字典中)。 -
@martineau 希望编辑有所帮助。
-
是的,看起来很有帮助。
标签: python count multiple-columns nested-loops