从列表中取两个元素

时间:2015-07-30 18:52:04

标签: python list dictionary

我有以下列表:

['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}

3 个答案:

答案 0 :(得分:5)

您可以尝试:

>>> 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}

答案 1 :(得分:4)

float(v)

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

int(v)

如果数字可能是浮点值而不是整数,请使用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 代替{{1}}。

不使用任何built-in functions

{{1}}

答案 2 :(得分:0)

您可以将列表拆分为两个,一个包含字母,另一个包含键,

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

然后你可以使用zip一次循环两个列表,然后你可以制作字典。