Python中的字典理解是否可以进行多次迭代,如列表?

2024-04-29 11:17:40 发布

您现在位置:Python中文网/ 问答频道 /正文

在某些特殊情况下,我们可以在字典理解中使用多次迭代吗

例如,我们有以下格式的字符串:-

"6: 14, 11: 28, 17: 74, 22: 7, 38: 59, 49: 12, 57: 76, 61: 54, 81: 98, 88: 4"

因此,如果我想将6,11,17,22,38,......设置为键 和14,28,74,7...作为相应的值 如何通过词典理解来实现


Tags: 字符串字典格式情况词典
3条回答

使用dict构造函数

dict(x.replace(' ', '').split(':') for x in s.split(','))

或者使用dict构造函数和map函数

dict(map(lambda x: x.replace(' ', '').split(':'), s.split(',')))

输出

{'6': '14', '11': '28', '17': '74', '22': '7', '38': '59', '49': '12', '57': '76', '61': '54', '81': '98', '88': '4'}

词典理解与split()上的:结合应该足够好:

dic = {elt.split(':')[0].strip(): elt.split(':')[1].strip() for elt in string.split(',')}

输出:

{'6': '14', '11': '28', '17': '74', '22': '7', '38': '59', '49': '12', '57': '76', '61': '54', '81': '98', '88': '4'}

如果希望键和值作为int对象:

dic = {int(elt.split(':')[0].strip()): int(elt.split(':')[1].strip()) for elt in string.split(',')}

输出:

{6: 14, 11: 28, 17: 74, 22: 7, 38: 59, 49: 12, 57: 76, 61: 54, 81: 98, 88: 4}

可以使用^{}将字符串转换为字典:

import ast

my_string = "6: 14, 11: 28, 17: 74, 22: 7, 38: 59, 49: 12, 57: 76, 61: 54, 81: 98, 88: 4"
my_dict = ast.literal_eval(f"{{{my_string}}}")

相关问题 更多 >