python:创建一个字典

use*_*865 0 python dictionary

假设我有一个字符串列表:

["dog", "cat" ,"boy", "cat", "car", "bus",....]
Run Code Online (Sandbox Code Playgroud)

我想把它转换成这样的字典:

{"dog": ["cat"], "cat":["boy","car"], "boy": ["cat"], "car":["bus"]....}
Run Code Online (Sandbox Code Playgroud)

将列表中的每个字符串转换为键并将以下字符串作为列表转换为值的最佳方法是什么?有时候我用相同的键得到的值很少,所以我想把它们放在一起(比如上面字典的第二个索引).

Pla*_*ure 7

lst = ["dog", "cat" ,"boy", "cat", "car", "bus"]
pairs = zip(lst, lst[1:])     # [("dog", "cat"), ("cat", "boy"), ...]
d = {}
for k,v in pairs:
    d.setdefault(k, [])    # Set e.g. d["dog"] to [] if there is no d["dog"] yet
    d[k].append(v)
Run Code Online (Sandbox Code Playgroud)

  • 很难辨别出这种模式,但要仔细看看:"猫"出现两次; 第一次,接着是"男孩",第二次接着是"汽车".因此,值输入是"["boy","car"]`.我花了几分钟才明白它,我自己:-) (2认同)