创建带有for循环的Dictionary



试图为字符串abc中的每个字母分配一个数字。而不是得到{a: 0, b: 1, c: 2等}的字典,我得到许多只有一个密钥对的新行。

message = "54 396 131 198 225 258 87 258 128 211 57 235 114 258 144 220 39 175 330 338 297 288"
m2 = message.replace(" ", ",")
print(m2)
li = list(m2.split(","))
print(li)
res = []
#res = [eval(i) for i in li]
for i in li:
res.append(eval(i))

print(res)
giz = []
for i in res:
giz.append(i % 37)
print(giz)

#for i in f:
#   print(int(math.fmod(i, 37)),end=" ")
abc = "abcdefghijklmnopqrstuvwxyz0123456789_"
d = {}
o = -1
for i in abc:
o += 1
d = {o : i}

print(d)

输出
54,396,131,198,225,258,87,258,128,211,57,235,114,258,144,220,39,175,330,338,297,288
['54', '396', '131', '198', '225', '258', '87', '258', '128', '211', '57', '235', '114', '258', '144', '220', '39', '175', '330', '338', '297', '288']
[54, 396, 131, 198, 225, 258, 87, 258, 128, 211, 57, 235, 114, 258, 144, 220, 39, 175, 330, 338, 297, 288]
[17, 26, 20, 13, 3, 36, 13, 36, 17, 26, 20, 13, 3, 36, 33, 35, 2, 27, 34, 5, 1, 29]
{0: 'a'}
{1: 'b'}
{2: 'c'}
{3: 'd'}
{4: 'e'}
{5: 'f'}
{6: 'g'}
{7: 'h'}
{8: 'i'}
{9: 'j'}
{10: 'k'}
{11: 'l'}
{12: 'm'}
{13: 'n'}
{14: 'o'}
{15: 'p'}
{16: 'q'}
{17: 'r'}
{18: 's'}
{19: 't'}
{20: 'u'}
{21: 'v'}
{22: 'w'}
{23: 'x'}
{24: 'y'}
{25: 'z'}
{26: '0'}
{27: '1'}
{28: '2'}
{29: '3'}
{30: '4'}
{31: '5'}
{32: '6'}
{33: '7'}
{34: '8'}
{35: '9'}
{36: '_'}

我试着在谷歌和到处找,找不到答案。有什么建议可以帮助我们在未来找到这类模糊问题的答案吗?

首先,在循环的每次迭代中打印字典其次,应该使用update方法,因为每次迭代都要重新定义字典,而不是向它添加内容。它应该看起来像

d = {}
o = 0
for i in abc:
d.update({o : i})
o+=1
print(d)
abc = "abcdefghijklmnopqrstuvwxyz0123456789_"
d = {}
o = 1
for i in abc:
d[i] = o
o+=1
print(d)

使用dict.update({…})函数——>来回答你的基本问题。它写入一个现有的字典,而不创建一个新的。

为了简化整个事情,我建议使用

message = "0 1 2 3 4 5 6 7 8 9 10"
resultingDict = dict([(int(c), chr(int(c)+97)) for c in message.split(' ')])
print (resultingDict)

生成

的输出
{0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e', 5: 'f', 6: 'g', 7: 'h', 8: 'i', 9: 'j', 10: 'k'}

好运

最新更新