‘,’柏林’,‘科隆’]}
键(国家/地区)的数量是可变的:数组中元素城市的数量也是可变的。结果集来自“搜索” 市 </跨度> 这样命名,例如 a 聪明 </跨度> 切片的方式使得[3:8]会产生:
{‘UK’:[‘格拉斯哥’], ‘法国’:[‘巴黎’,‘加莱’,‘尼斯’,‘戛纳’, ‘德国’:[‘慕尼黑’]}
(对此问题的提出方式表示道歉 - 我不确定真正的用法会澄清问题……)
如果我正确理解你的问题,正如评论中所谈到的那样,应该这样做
from pprint import pprint def slice_dict(d,a, b): big_list = [] ret_dict = {} # Make one big list of all numbers, tagging each number with the key # of the dict they came from. for k, v in d.iteritems(): for n in v: big_list.append({k:n}) # Slice it sliced = big_list[a:b] # Put everything back in order for k, v in d.iteritems(): for subd in sliced: for subk, subv in subd.iteritems(): if k == subk: if k in ret_dict: ret_dict[k].append(subv) else: ret_dict[k] = [subv] return ret_dict d = { 'a': [1, 2, 3, 4], 'b': [5, 6, 7, 8, 9], 'c': [10, 11, 12, 13, 14] } x = slice_dict(d, 3, 11) pprint(x)
$ python slice.py {'a': [4], 'b': [5, 6], 'c': [10, 11, 12, 13, 14]}
输出与示例输出略有不同,但这是因为dict在传递给函数时没有排序。这是a-c-b,这就是为什么b在6处切断而c没有切断的原因