我有以下列表:
['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}
答案 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
一次循环两个列表,然后你可以制作字典。