假设我的字典看起来像这样:
test = {1: {'los angeles': ['playlist1', 'playlist2']}, 2: {'houston': ['playlist']}}
在这段代码中,我想添加属于'los angeles'的数组,基本上附加到它。有没有办法执行1声明为通配符的操作?我想做这样的事情:
test[_]['los angeles'].append('playlist3')
哪会导致:
test = {1: {'los angeles': ['playlist1', 'playlist2', 'playlist3']}, 2: {'houston': ['playlist']}}
答案 0 :(得分:1)
没有像野外卡那样的东西。你应该手动完成:
for k in test:
if 'los angeles' in test[k]:
test[k]['los angeles'].append('playlist3')
或者:
test[next(k for k in test if 'los angeles' in test[k])]['los angeles'].append('playlist3')
如果没有带有“log angeles”键的字典,单行版本将抛出StopIteration。它只更新匹配的第一个字典。
答案 1 :(得分:1)
我不知道我是否完全理解这个问题,但我是否可以尝试一下。
外部字典中的整数键似乎正在阻碍你。
您似乎有一些城市名称的数据集,并且您希望将这些字符串映射到另外两个数据集,城市数字和城市播放列表强>。
不是在一个多维dict中完成所有操作,而是可以使用单独的dicts进行单独的映射。
city_playlists = {'los angeles':['playlist1', 'playlist2'],
'houston':['playlist']}
city_names = {1:'los angeles',
2:'houston'}
然后,数据检索和更新就更加简单。
city_playlists['los angeles'].append('playlist3')
如果我理解你的'wildcard'是什么意思
wildcard = random.randint(1, len(city_names))
name = city_names[wildcard]
city_playlists[name].append('newplaylist')
您还可以使用列表将城市数字映射到城市名称,因为列表已编制索引,然后使用random.choice
从中提取随机城市名称清单。