使用下表,我想创建一个字典,其中水果作为键,数量作为值
grades = [['Fruit', 'Apples', 'Bananas', 'Coconut'],
['Jim', '4', '5', '6'],
['Kevin', '7', '8', '10'],
['Clayton', '8', '9', '2']]
例如:
QuantityList['Apples'] == [4,7,8]
我在下面有以下代码,但我得到了一个"'列表'对象不可调用"错误。
num=[y[1:] for y in table[1:]]
fruits = table[0][1:]
QuantityList={y[0]: {int(i) for i in num()} for y in fruits}
print(QuantityList)
有人可以就如何解决这个问题提供一些指导吗?
答案 0 :(得分:3)
看起来你想要的是:
<Context>
<Resource
name="jdbc/src"
type="javax.sql.DataSource"
maxActive="4"
maxIdle="2"
username="admin****I"
maxWait="5000"
validationQuery="select 1"
driverClassName="com.mysql.jdbc.Driver"
password="########"
url="jdbc:mysql://pi-******.rhcloud.com:3306/pi"/>
</Context>
答案 1 :(得分:0)
对于单线运动: map和zip函数在以下情况下很有用:
grades = [['Fruit', 'Apples', 'Bananas', 'Coconut'],
['Jim', '4', '5', '6'],
['Kevin', '7', '8', '10'],
['Clayton', '8', '9', '2']]
result = {row[0] : row[1:] for row in list(map(list, zip(*grades)))[1:]}
print(result)
给你
{'Apples': ['4', '7', '8'], 'Bananas': ['5', '8', '9'], 'Coconut': ['6', '10', '2']}
答案 2 :(得分:0)
您遇到错误是因为您在num()
变量分配行中写了num
而不是QuantityList
。您将num
定义为列表,但您尝试将其称为带括号的函数。
另一种解决方案可能是使用zip
对列进行分组,然后构建dict(跳过第一列('Fruit', 'Jim', 'Kevin', 'Clayton')
后):
columns = zip(*grades)
next(columns) # To skip ('Fruit', 'Jim', 'Kevin', 'Clayton')
QuantityList = {c[0]: [int(n) for n in c[1:]] for c in columns}
print(QuantityList) # {'Bananas': [5, 8, 9], 'Apples': [4, 7, 8], 'Coconut': [6, 10, 2]}
使用zip(*grades)
我们将grades
中的每一行作为参数传递给zip
函数,zip
按列对值进行分组。