如何用Python创建一个以列表为键的字典?
我想用Python创建一个字典,其中键是列表 我想面对的问题是,我有一个多个整数值(从1到300)的列表,根据不同的值范围,我想将它们转换为字符。例如:如何用Python创建一个以列表为键的字典?,python,list,dictionary,vector,range,Python,List,Dictionary,Vector,Range,我想用Python创建一个字典,其中键是列表 我想面对的问题是,我有一个多个整数值(从1到300)的列表,根据不同的值范围,我想将它们转换为字符。例如: 将1到100之间的值转换为字符“A” 将101到200之间的值转换为字符“B” 将201到300之间的值转换为字符“C” 我试过这种方法,但没有成功: dictionary = {[1, 100]:'A', [101, 200]:'B', [201, 300]:'C'} 但我得到了一个错误: TypeError: unhashable t
- 将1到100之间的值转换为字符“A”
- 将101到200之间的值转换为字符“B”
- 将201到300之间的值转换为字符“C”
dictionary = {[1, 100]:'A', [101, 200]:'B', [201, 300]:'C'}
但我得到了一个错误:
TypeError: unhashable type: 'list'
我该怎么做?将列表转换为元组。元组是可散列的。清单并非如此
dictionary = {(1, 100):'A', (101, 200):'B', (201, 300):'C'}
将列表转换为元组。元组是可散列的。清单并非如此
dictionary = {(1, 100):'A', (101, 200):'B', (201, 300):'C'}
可以使用元组、列表的表示形式或列表的表示形式:
>>> d1={repr([1, 100]):'A', repr([101, 200]):'B', repr([201, 300]):'C'}
>>> import json
>>> d2={json.dumps([1, 100]):'A', json.dumps([101, 200]):'B', json.dumps([201, 300]):'C'}
>>> d2
{'[101, 200]': 'B', '[1, 100]': 'A', '[201, 300]': 'C'}
>>> d1
{'[101, 200]': 'B', '[1, 100]': 'A', '[201, 300]': 'C'}
可以使用元组、列表的表示形式或列表的表示形式:
>>> d1={repr([1, 100]):'A', repr([101, 200]):'B', repr([201, 300]):'C'}
>>> import json
>>> d2={json.dumps([1, 100]):'A', json.dumps([101, 200]):'B', json.dumps([201, 300]):'C'}
>>> d2
{'[101, 200]': 'B', '[1, 100]': 'A', '[201, 300]': 'C'}
>>> d1
{'[101, 200]': 'B', '[1, 100]': 'A', '[201, 300]': 'C'}
我不知道我是否理解正确,但您尝试将[1300]范围内的整数列表转换为包含字符a、B、C的字符列表,具体取决于整数值。我不明白你为什么需要一个带有列表键的dict 您可以通过一个简单的for循环和几个if语句来实现
import random
ints = [random.randint(1,300) for i in xrange(10)]
chars = []
for el in ints:
if el > 0 and el <= 300:
if el <= 100:
chars.append("A")
elif el <= 200:
chars.append("B")
else:
chars.append("C")
else:
raise RuntimeError("element {} not in valid range.".format(el))
print(ints)
print(chars)
我不知道我是否理解正确,但您尝试将[1300]范围内的整数列表转换为包含字符a、B、C的字符列表,具体取决于整数值。我不明白你为什么需要一个带有列表键的dict 您可以通过一个简单的for循环和几个if语句来实现
import random
ints = [random.randint(1,300) for i in xrange(10)]
chars = []
for el in ints:
if el > 0 and el <= 300:
if el <= 100:
chars.append("A")
elif el <= 200:
chars.append("B")
else:
chars.append("C")
else:
raise RuntimeError("element {} not in valid range.".format(el))
print(ints)
print(chars)
将列表转换为元组。元组是可散列的。列表不是。是否有理由不使用字母作为键?请使用元组或list@khelwood,为什么不将其作为答案发布,除非这是重复的?字典键必须是不可变的,这意味着一旦它们被创建,它们就不能被更改。列表是可变的。字符串、元组和数字是不可变的,因此可以像khelwood指出的那样作为键。将列表转换为元组。元组是可散列的。列表不是。是否有理由不使用字母作为键?请使用元组或list@khelwood,为什么不将其作为答案发布,除非这是重复的?字典键必须是不可变的,这意味着一旦它们被创建,它们就不能被更改。列表是可变的。字符串、元组和数字是不可变的,因此可以是键,正如khelwood指出的那样。谢谢,它帮了我很多忙!但是,我如何检查哪个组是值?我的意思是,如果我有一个值X,我怎么能在字典中搜索它,以检查它是否必须转换为“a”、“B”或“C”?@jartymcfly听起来你有一个新问题要问。谢谢,这对我帮助很大!但是,我如何检查哪个组是值?我的意思是,如果我有一个值X,我如何搜索字典来检查它是否必须转换为“a”、“B”或“C”?@jartymcfly听起来你有一个新问题要问。