Python 将列表转换为字典,并使用列表理解将其值和键转换为整数

Python 将列表转换为字典,并使用列表理解将其值和键转换为整数,python,dictionary,Python,Dictionary,假设我们有一个名为a的列表: A = [['1', '200'], ['2', '450'], ['3', '300']] 我想做的是将上面的列表转换成一个字典,第一个元素作为键,第二个元素作为值,然后我想将键和值都转换成整数 因此,情况如下: A = {1: 200, 2: 450, 3: 300} 所有键和值都是整数 我为此尝试了列表理解: A = dict(zip(int(a), int(b)) for a, b in row for row in A) 有错

假设我们有一个名为
a
的列表:

A = [['1', '200'], ['2', '450'], ['3', '300']]
我想做的是将上面的列表转换成一个字典,第一个元素作为键,第二个元素作为值,然后我想将键和值都转换成整数

因此,情况如下:

A = {1: 200, 
     2: 450,
     3: 300}
所有键和值都是整数

我为此尝试了列表理解:

A = dict(zip(int(a), int(b)) for a, b in row for row in A) 
有错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'row' is not defined
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
NameError:未定义名称“行”
您不需要这里的
zip()
,只需放下它,您就可以直接在
A
上循环,然后解压缩到
A
b

A = dict((int(a), int(b)) for a, b in A)
这是一个将元组传递给
dict()
callable的生成器表达式

如果可以,你想用字典来代替;这在Python2.7和更新版本(包括所有Python3.x版本)中都可用:

演示:


请务必包含有错误的内容的错误消息。感谢您的更正@MartijnPietersYap,这就是我要找的,谢谢提醒我在发布我的答案时,我的页面没有显示此答案:p。。。干杯,我总是忘记列表理解可以使用多个变量来访问其成员,所以我总是自动使用单个变量,如
[i for i in mylist]
…嘿,如果
a
是一个分号逗号分隔的值字符串,例如
a=“1200;2450;3300”
?如何拆分它并将其转换为
int
?@JONPANTAU:数据从何处开始,一个文件?考虑使用<代码> CSV 模块至少处理<代码>;<代码>拆分。剩下的只是进一步的文本处理
dict([int(v)表示成对的v.split(',')]表示成对的A.split(';')
将处理您的示例。是的,它与之前的一个类似,不同之处在于您创建一个新变量。@JONPANTAU是的,您可以覆盖
A
,就像
A={int(i[0]:int(i[1])表示A}中的i一样
。我只是有一个不覆盖原始数据的习惯,在需要保留原始数据源时很方便,在脚本中涉及大量可变迭代时更干净。
A = {int(a): int(b) for a, b in A}
>>> A = [['1', '200'], ['2', '450'], ['3', '300']]
>>> dict((int(a), int(b)) for a, b in A)
{1: 200, 2: 450, 3: 300}
>>> {int(a): int(b) for a, b in A}
{1: 200, 2: 450, 3: 300}
A = [['1', '200'],['2', '450'],['3','300']]
B_dict = {int(i[0]): int(i[1]) for i in A}