从列表中逐个获取元素

2024-04-24 23:34:48 发布

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

我有如下清单:

['a', '2', 'b', '1', 'c', '4']
['d', '5', 'e', '7', 'f', '4', 'g', '6']

我想做一个字典,由字母和数字组成。我是说:

{'a': 2, 'b': 1, 'c': 4, 'd':5, 'e':7, 'f':4, 'g':6}

Tags: 字典字母数字
3条回答

您可以尝试:

>>> l = ['a', '2', 'b', '1', 'c', '4']
>>> it = iter(l)
>>> dict(zip(it, it))
{'a': '2', 'c': '4', 'b': '1'}

首先从列表中创建一个迭代器。然后使用迭代器本身的zip,从列表中获取一对值。最后,使用dict将这些元组转换为所需的字典。你知道吗

如果还要进行字符串到数字的转换,请使用:

{x: int(y) for x, y in zip(it, it)}

编辑

如果您不想使用zip,那么:

{x: int(next(it)) for x in it}
l = ['a', '2', 'b', '1', 'c', '4']
d = {k:v for k,v in zip(l[::2], l[1::2])}

或者,如果您希望这些数字是实际数字:

l = ['a', '2', 'b', '1', 'c', '4']
d = {k:int(v) for k,v in zip(l[::2], l[1::2])}

如果数字可能是浮点值而不是整数,请使用float(v)而不是int(v)。你知道吗

不使用任何built-in functions

l = ['a', '2', 'b', '1', 'c', '4']
d = {}
l1 = l[::2]
l2 = l[1::2]
idx = 0
while 1:
    try:
        d[l1[idx]] = l2[idx]
        idx += 1
    except IndexError:
        break

您可以将列表分成两部分,一部分包含字母,另一部分包含键,使用

key_list = old_list[::2]
value_list = old_list[1::2]

然后你可以用zip一次循环两个列表,然后你就可以制作字典了。你知道吗

相关问题 更多 >