我需要将一个整数值和索引放入相应字符串的表中。在这种情况下,连续的整数范围应该都映射到相同的字符串。像(使用非工作字典示例):
int_dict = { 0 : "String1",
1 : "String2",
2 : "String3",
range(3,15) : "String4",
16 : "String5" };
正如预期的那样,在这里使用range
失败并尝试使用列表会产生错误TypeError: unhashable type: 'list'
。
字典可能不是此任务的最佳数据结构。那么,我的问题是,如何轻松完成这样的事情?范围往往非常大,因此通过手动定义(除非可以使用range
之类的东西)这样做不是一种选择。
答案 0 :(得分:1)
这是你想要达到的目标吗?
for(int j =0; j < resultArr.size(); j++){
//do the code you done before from first for loop in here
}
输出:
int_dict = { 0 : "String1",
1 : "String2",
2 : "String3",
16 : "String5" };
#range is first inclusive last exlusif, watch out for that
for i in range(3,15) :
int_dict[i] = "String4"
编辑:你也可以使用元组作为键
{0: 'String1',
1: 'String2',
2: 'String3',
3: 'String4',
4: 'String4',
5: 'String4',
6: 'String4',
7: 'String4',
8: 'String4',
9: 'String4',
10: 'String4',
11: 'String4',
12: 'String4',
13: 'String4',
14: 'String4',
16: 'String5'}
输出:
int_dict = { (0,0) : "String1",
(1,1) : "String2",
(2,2) : "String3",
(3,15) :"String4",
(16,16) : "String5"};
def ValueInDict(value):
for i,j in int_dict.items():
if value >= i[0]:
if value <= i[1]:
print(j)
return
print("NOT THERE")
ValueInDict(5)
答案 1 :(得分:0)
嵌套词典怎么样?第一级键是区间的左侧而第二级键是右侧的?
d = {0:{0:"String1"},
...
3:{15:"String4"},
16:{16:"String5"}};
答案 2 :(得分:0)
我认为这种罕见的案例有一种特殊的语法。但是,您可以使用一系列键和所需的值创建dict
。然后使用int_dict
将其添加到update
。
int_dict = { 0 : "String1",
1 : "String2",
2 : "String3",
16 : "String5" };
int_dict.update(dict([i, "String4"] for i in range(3,16)))
答案 3 :(得分:0)
用词汇理解:
int_dict = {n:'String{}'.format(n+1) for n in range(0,4)}
int_dict.update({n:'String4' for n in range(3,16)})
int_dict.update({16:'String5'})
答案 4 :(得分:0)
我提出了一个解决方案,我发现更多pythonic:首先创建一个具有不同值的键的字典,然后使用int_dict = {
0: "String1",
1: "String2",
2: "String3",
16: "String5"
}
int_dict.update(dict.fromkeys(range(3,15), "String4"))
{{1}}