我试图在一个步骤中为同一个值分配多个键,但我遇到了麻烦。
stateDict = {1:'AZ', 2:'AZ', 3:'AZ', 4:'AZ'.......}
我想将0-100
全部数字分配给'AZ'
,而无需单独分配。
这可能吗?
答案 0 :(得分:5)
您可以使用dictionary comprehension:
>>> {x:'AZ' for x in range(1, 100)} # Use xrange in Python 2
{1: 'AZ', 2: 'AZ', 3: 'AZ', 4: 'AZ', 5: 'AZ', 6: 'AZ', 7: 'AZ', 8: 'AZ', 9: 'AZ', 10: 'AZ', 11: 'AZ', 12: 'AZ', 13: 'AZ', 14: 'AZ', 15: 'AZ', 16: 'AZ', 17: 'AZ', 18: 'AZ', 19: 'AZ', 20: 'AZ', 21: 'AZ', 22: 'AZ', 23: 'AZ', 24: 'AZ', 25: 'AZ', 26: 'AZ', 27: 'AZ', 28: 'AZ', 29: 'AZ', 30: 'AZ', 31: 'AZ', 32: 'AZ', 33: 'AZ', 34: 'AZ', 35: 'AZ', 36: 'AZ', 37: 'AZ', 38: 'AZ', 39: 'AZ', 40: 'AZ', 41: 'AZ', 42: 'AZ', 43: 'AZ', 44: 'AZ', 45: 'AZ', 46: 'AZ', 47: 'AZ', 48: 'AZ', 49: 'AZ', 50: 'AZ', 51: 'AZ', 52: 'AZ', 53: 'AZ', 54: 'AZ', 55: 'AZ', 56: 'AZ', 57: 'AZ', 58: 'AZ', 59: 'AZ', 60: 'AZ', 61: 'AZ', 62: 'AZ', 63: 'AZ', 64: 'AZ', 65: 'AZ', 66: 'AZ', 67: 'AZ', 68: 'AZ', 69: 'AZ', 70: 'AZ', 71: 'AZ', 72: 'AZ', 73: 'AZ', 74: 'AZ', 75: 'AZ', 76: 'AZ', 77: 'AZ', 78: 'AZ', 79: 'AZ', 80: 'AZ', 81: 'AZ', 82: 'AZ', 83: 'AZ', 84: 'AZ', 85: 'AZ', 86: 'AZ', 87: 'AZ', 88: 'AZ', 89: 'AZ', 90: 'AZ', 91: 'AZ', 92: 'AZ', 93: 'AZ', 94: 'AZ', 95: 'AZ', 96: 'AZ', 97: 'AZ', 98: 'AZ', 99: 'AZ'}
>>>
答案 1 :(得分:4)
您可以使用.fromkeys()方法:
>>> d={}.fromkeys(range(1, 101), 'AZ')
>>> d
{1: 'AZ', 2: 'AZ', 3: 'AZ', 4: 'AZ', 5: 'AZ', 6: 'AZ', 7: 'AZ', 8: 'AZ', 9: 'AZ', 10: 'AZ', 11: 'AZ', 12: 'AZ', 13: 'AZ', 14: 'AZ', 15: 'AZ', 16: 'AZ', 17: 'AZ', 18: 'AZ', 19: 'AZ', 20: 'AZ', 21: 'AZ', 22: 'AZ', 23: 'AZ', 24: 'AZ', 25: 'AZ', 26: 'AZ', 27: 'AZ', 28: 'AZ', 29: 'AZ', 30: 'AZ', 31: 'AZ', 32: 'AZ', 33: 'AZ', 34: 'AZ', 35: 'AZ', 36: 'AZ', 37: 'AZ', 38: 'AZ', 39: 'AZ', 40: 'AZ', 41: 'AZ', 42: 'AZ', 43: 'AZ', 44: 'AZ', 45: 'AZ', 46: 'AZ', 47: 'AZ', 48: 'AZ', 49: 'AZ', 50: 'AZ', 51: 'AZ', 52: 'AZ', 53: 'AZ', 54: 'AZ', 55: 'AZ', 56: 'AZ', 57: 'AZ', 58: 'AZ', 59: 'AZ', 60: 'AZ', 61: 'AZ', 62: 'AZ', 63: 'AZ', 64: 'AZ', 65: 'AZ', 66: 'AZ', 67: 'AZ', 68: 'AZ', 69: 'AZ', 70: 'AZ', 71: 'AZ', 72: 'AZ', 73: 'AZ', 74: 'AZ', 75: 'AZ', 76: 'AZ', 77: 'AZ', 78: 'AZ', 79: 'AZ', 80: 'AZ', 81: 'AZ', 82: 'AZ', 83: 'AZ', 84: 'AZ', 85: 'AZ', 86: 'AZ', 87: 'AZ', 88: 'AZ', 89: 'AZ', 90: 'AZ', 91: 'AZ', 92: 'AZ', 93: 'AZ', 94: 'AZ', 95: 'AZ', 96: 'AZ', 97: 'AZ', 98: 'AZ', 99: 'AZ', 100: 'AZ'}
如果字典已存在,请使用.update():
>>> d={1:'A', 2:'B', 3:'C'}
>>> d.update({}.fromkeys(range(4,10), 'the rest'))
>>> d
{1: 'A', 2: 'B', 3: 'C', 4: 'the rest', 5: 'the rest', 6: 'the rest', 7: 'the rest', 8: 'the rest', 9: 'the rest'}
您可以使用不同的值执行多个范围:
>>> d={}.fromkeys(range(5), 'AZ')
>>> d
{0: 'AZ', 1: 'AZ', 2: 'AZ', 3: 'AZ', 4: 'AZ'}
>>> d.update({}.fromkeys(range(5,10), 'AK'))
>>> d
{0: 'AZ', 1: 'AZ', 2: 'AZ', 3: 'AZ', 4: 'AZ', 5: 'AK', 6: 'AK', 7: 'AK', 8: 'AK', 9: 'AK'}
认为它有点像字典的切片。
尽管如此,不要犯这个错误:
>>> d={}.fromkeys(range(5), [])
>>> d
{0: [], 1: [], 2: [], 3: [], 4: []}
>>> d[0].append('mistake')
>>> d
{0: ['mistake'], 1: ['mistake'], 2: ['mistake'], 3: ['mistake'], 4: ['mistake']}
由于fromkeys(seq[, value])
中的值是固定的,因此没有进行交互。
答案 2 :(得分:3)
定义一个空字典,然后迭代1到100范围内的数字,然后将d[key]='AZ'
AZ指定给每个数字作为字典键。
>>> d = {}
>>> for i in range(1,100):
d[i] = 'AZ'
>>> d
{1: 'AZ', 2: 'AZ', 3: 'AZ', 4: 'AZ', 5: 'AZ', 6: 'AZ', 7: 'AZ', 8: 'AZ', 9: 'AZ', 10: 'AZ', 11: 'AZ', 12: 'AZ', 13: 'AZ', 14: 'AZ', 15: 'AZ', 16: 'AZ', 17: 'AZ', 18: 'AZ', 19: 'AZ', 20: 'AZ', 21: 'AZ', 22: 'AZ', 23: 'AZ', 24: 'AZ', 25: 'AZ', 26: 'AZ', 27: 'AZ', 28: 'AZ', 29: 'AZ', 30: 'AZ', 31: 'AZ', 32: 'AZ', 33: 'AZ', 34: 'AZ', 35: 'AZ', 36: 'AZ', 37: 'AZ', 38: 'AZ', 39: 'AZ', 40: 'AZ', 41: 'AZ', 42: 'AZ', 43: 'AZ', 44: 'AZ', 45: 'AZ', 46: 'AZ', 47: 'AZ', 48: 'AZ', 49: 'AZ', 50: 'AZ', 51: 'AZ', 52: 'AZ', 53: 'AZ', 54: 'AZ', 55: 'AZ', 56: 'AZ', 57: 'AZ', 58: 'AZ', 59: 'AZ', 60: 'AZ', 61: 'AZ', 62: 'AZ', 63: 'AZ', 64: 'AZ', 65: 'AZ', 66: 'AZ', 67: 'AZ', 68: 'AZ', 69: 'AZ', 70: 'AZ', 71: 'AZ', 72: 'AZ', 73: 'AZ', 74: 'AZ', 75: 'AZ', 76: 'AZ', 77: 'AZ', 78: 'AZ', 79: 'AZ', 80: 'AZ', 81: 'AZ', 82: 'AZ', 83: 'AZ', 84: 'AZ', 85: 'AZ', 86: 'AZ', 87: 'AZ', 88: 'AZ', 89: 'AZ', 90: 'AZ', 91: 'AZ', 92: 'AZ', 93: 'AZ', 94: 'AZ', 95: 'AZ', 96: 'AZ', 97: 'AZ', 98: 'AZ', 99: 'AZ'}
答案 3 :(得分:0)
不,这是不可能的,但通过词典理解很容易做到:
state_dict = {n: 'AZ' for n in range(100)}