我尝试将参数列表传递给必须从列表和字典中放在一起的函数,但是像往常一样,Python无奈地抱怨着某些东西“不可迭代”或“不可下标”而没有确切说明错误。请考虑以下内容:
argl=[p,T,C]
argl.append(list(ph.items))
Ci['ol']=fsolve(Cr_impl,0.1*C,argl)
其中fsolve
是numpy的根查找器,ph是具有'ol': 0.55
等形式以及p
,T
和{{1 }}是包含一些实数的简单标量。 Python抱怨C
。我也尝试过
'builtin_function_or_method' object is not iterable
具有相同的结果,以及
argl=[p,T,C]+list(ph.items)
结果
argl=[p,T,C]+ph.items
那么,它想要什么?必须有一种方法可以分解字典,使其可以合并为更长的列表(然后可以在调用的函数中重新排列)。
答案 0 :(得分:3)
dict.items
是一种方法。您需要在其上添加括号以实际调用它。例如
argl.append(list(ph.items()))
答案 1 :(得分:2)
错误是ph.items
作为内置方法生成器返回,而ph.items()
返回所需的值列表。
将代码更正为argl.append(list(ph.items()))
答案 2 :(得分:0)
尽管已经被其他人回答,但以下内容可能会给您带来更多的想法:
dic={'a':1, 'b':2, 'c':3}
print (dic.keys)
输出
<built-in method keys of dict object ....
print (dic.keys())
输出dict_keys(['a', 'b', 'c'])
dic.values
也是如此。希望你能得到答案。