如何使用Python为字典中缺失的键添加空字符串值

0 投票
2 回答
2386 浏览
提问于 2025-04-17 16:15

下面是一个字典的示例:

d = { 1:'',2:'',3:'',5:'',6:'2',7:'',9:'',10:'6',11:'7',13:'9',14:'',15:'11'}

我想在键3后面添加一个键4,值是空字符串;在键7后面添加一个键8,值也是空字符串,依此类推……我想要用最简单的Python代码来实现这个。

2 个回答

2

Python 的字典是没有顺序的。你不能在某个键后面再添加东西。

只需要添加你缺少的键:

d.update((missing, '') for missing in set(range(1, max(d) + 1)).difference(d))

这其实是说:

for index in range(1, max(d) + 1):  # all numbers from 1 to the highest value in the dict
    if index not in d:              # index is missing
        d[index] = ''               # add an empty entry

不过,看起来你可能更需要一个列表:

alist = [None, '', '', '', '', '', '2', '', '', '', '6', '7', '', '9', '', '11']

在这里,alist[15] 返回的结果是 '11',就像你的 d 一样。开头的 None 让你更容易使用从1开始的索引,而不是从0开始的索引,否则你可能需要调整你的代码。

5
>>> d = { 1:'',2:'',3:'',5:'',6:'2',7:'',9:'',10:'6',11:'7',13:'9',14:'',15:'11'}
>>> d.update(dict.fromkeys(set(range(16)).difference(d), ''))
>>> d
{0: '', 1: '', 2: '', 3: '', 4: '', 5: '', 6: '2', 7: '', 8: '', 9: '', 10: '6', 11: '7', 12: '', 13: '9', 14: '', 15: '11'}

请注意,字典(dict)是没有顺序的,尽管在这个例子中它看起来是有顺序的!

撰写回答