Python:如何将元组列表转换为字典键?

Python:如何将元组列表转换为字典键?,python,dictionary,tuples,range,Python,Dictionary,Tuples,Range,我知道我可以创建一个元组列表,这些元组跟踪列表索引,如下所示: my_tuples=[[(n,k)表示范围(10)中的n]表示范围(10)中的k)] 但是,我想使用这些作为字典键。我试过这样做: my\u dict=dict(zip(my\u tuple,some\u other\u iterable)) 当然,这给了我一个“不可损坏的类型:列表”错误,这是我应该预料到的 除了使用double for循环之外,还有什么方法可以实现我在上面用dict和zip所做的事情吗 我正在寻找的一个小样本是:

我知道我可以创建一个元组列表,这些元组跟踪列表索引,如下所示:

my_tuples=[[(n,k)表示范围(10)中的n]表示范围(10)中的k)]

但是,我想使用这些作为字典键。我试过这样做:

my\u dict=dict(zip(my\u tuple,some\u other\u iterable))

当然,这给了我一个“不可损坏的类型:列表”错误,这是我应该预料到的

除了使用double for循环之外,还有什么方法可以实现我在上面用dict和zip所做的事情吗

我正在寻找的一个小样本是:

my_dict={(0,0):无,(0,1):无,(0,2):无,(1,0):无,(1,1):无,(1,2):无}


谢谢您的时间。

您的问题是
my\u tuples
是一个包含10个元素的10个子列表的嵌套列表。如果你将列表展平,效果很好。例如:

my_tuples = [(n,k) for n in range(10) for k in range(10)]
my_dict = dict(zip(my_tuples, [None] * 100))
print(my_dict)
输出:

{(0, 0): None, (0, 1): None, (0, 2): None, (0, 3): None, (0, 4): None, (0, 5): None, (0, 6): None, (0, 7): None, (0, 8): None, (0, 9): None, (1, 0): None, (1, 1): None, (1, 2): None, (1, 3): None, (1, 4): None, (1, 5): None, (1, 6): None, (1, 7): None, (1, 8): None, (1, 9): None, (2, 0): None, (2, 1): None, (2, 2): None, (2, 3): None, (2, 4): None, (2, 5): None, (2, 6): None, (2, 7): None, (2, 8): None, (2, 9): None, (3, 0): None, (3, 1): None, (3, 2): None, (3, 3): None, (3, 4): None, (3, 5): None, (3, 6): None, (3, 7): None, (3, 8): None, (3, 9): None, (4, 0): None, (4, 1): None, (4, 2): None, (4, 3): None, (4, 4): None, (4, 5): None, (4, 6): None, (4, 7): None, (4, 8): None, (4, 9): None, (5, 0): None, (5, 1): None, (5, 2): None, (5, 3): None, (5, 4): None, (5, 5): None, (5, 6): None, (5, 7): None, (5, 8): None, (5, 9): None, (6, 0): None, (6, 1): None, (6, 2): None, (6, 3): None, (6, 4): None, (6, 5): None, (6, 6): None, (6, 7): None, (6, 8): None, (6, 9): None, (7, 0): None, (7, 1): None, (7, 2): None, (7, 3): None, (7, 4): None, (7, 5): None, (7, 6): None, (7, 7): None, (7, 8): None, (7, 9): None, (8, 0): None, (8, 1): None, (8, 2): None, (8, 3): None, (8, 4): None, (8, 5): None, (8, 6): None, (8, 7): None, (8, 8): None, (8, 9): None, (9, 0): None, (9, 1): None, (9, 2): None, (9, 3): None, (9, 4): None, (9, 5): None, (9, 6): None, (9, 7): None, (9, 8): None, (9, 9): None}
{(0, 0): 0, (0, 1): 1, (0, 2): 2, (0, 3): 3, (0, 4): 4, (0, 5): 5, (0, 6): 6, (0, 7): 7, (0, 8): 8, (0, 9): 9, (1, 0): 10, (1, 1): 11, (1, 2): 12, (1, 3): 13, (1, 4): 14, (1, 5): 15, (1, 6): 16, (1, 7): 17, (1, 8): 18, (1, 9): 19, (2, 0): 20, (2, 1): 21, (2, 2): 22, (2, 3): 23, (2, 4): 24, (2, 5): 25, (2, 6): 26, (2, 7): 27, (2, 8): 28, (2, 9): 29, (3, 0): 30, (3, 1): 31, (3, 2): 32, (3, 3): 33, (3, 4): 34, (3, 5): 35, (3, 6): 36, (3, 7): 37, (3, 8): 38, (3, 9): 39, (4, 0): 40, (4, 1): 41, (4, 2): 42, (4, 3): 43, (4, 4): 44, (4, 5): 45, (4, 6): 46, (4, 7): 47, (4, 8): 48, (4, 9): 49, (5, 0): 50, (5, 1): 51, (5, 2): 52, (5, 3): 53, (5, 4): 54, (5, 5): 55, (5, 6): 56, (5, 7): 57, (5, 8): 58, (5, 9): 59, (6, 0): 60, (6, 1): 61, (6, 2): 62, (6, 3): 63, (6, 4): 64, (6, 5): 65, (6, 6): 66, (6, 7): 67, (6, 8): 68, (6, 9): 69, (7, 0): 70, (7, 1): 71, (7, 2): 72, (7, 3): 73, (7, 4): 74, (7, 5): 75, (7, 6): 76, (7, 7): 77, (7, 8): 78, (7, 9): 79, (8, 0): 80, (8, 1): 81, (8, 2): 82, (8, 3): 83, (8, 4): 84, (8, 5): 85, (8, 6): 86, (8, 7): 87, (8, 8): 88, (8, 9): 89, (9, 0): 90, (9, 1): 91, (9, 2): 92, (9, 3): 93, (9, 4): 94, (9, 5): 95, (9, 6): 96, (9, 7): 97, (9, 8): 98, (9, 9): 99}
以iterable为例:

my_tuples = [(n,k) for n in range(10) for k in range(10)]
some_other_iterable = range(100)
my_dict = dict(zip(my_tuples, some_other_iterable))
print(my_dict)
输出:

{(0, 0): None, (0, 1): None, (0, 2): None, (0, 3): None, (0, 4): None, (0, 5): None, (0, 6): None, (0, 7): None, (0, 8): None, (0, 9): None, (1, 0): None, (1, 1): None, (1, 2): None, (1, 3): None, (1, 4): None, (1, 5): None, (1, 6): None, (1, 7): None, (1, 8): None, (1, 9): None, (2, 0): None, (2, 1): None, (2, 2): None, (2, 3): None, (2, 4): None, (2, 5): None, (2, 6): None, (2, 7): None, (2, 8): None, (2, 9): None, (3, 0): None, (3, 1): None, (3, 2): None, (3, 3): None, (3, 4): None, (3, 5): None, (3, 6): None, (3, 7): None, (3, 8): None, (3, 9): None, (4, 0): None, (4, 1): None, (4, 2): None, (4, 3): None, (4, 4): None, (4, 5): None, (4, 6): None, (4, 7): None, (4, 8): None, (4, 9): None, (5, 0): None, (5, 1): None, (5, 2): None, (5, 3): None, (5, 4): None, (5, 5): None, (5, 6): None, (5, 7): None, (5, 8): None, (5, 9): None, (6, 0): None, (6, 1): None, (6, 2): None, (6, 3): None, (6, 4): None, (6, 5): None, (6, 6): None, (6, 7): None, (6, 8): None, (6, 9): None, (7, 0): None, (7, 1): None, (7, 2): None, (7, 3): None, (7, 4): None, (7, 5): None, (7, 6): None, (7, 7): None, (7, 8): None, (7, 9): None, (8, 0): None, (8, 1): None, (8, 2): None, (8, 3): None, (8, 4): None, (8, 5): None, (8, 6): None, (8, 7): None, (8, 8): None, (8, 9): None, (9, 0): None, (9, 1): None, (9, 2): None, (9, 3): None, (9, 4): None, (9, 5): None, (9, 6): None, (9, 7): None, (9, 8): None, (9, 9): None}
{(0, 0): 0, (0, 1): 1, (0, 2): 2, (0, 3): 3, (0, 4): 4, (0, 5): 5, (0, 6): 6, (0, 7): 7, (0, 8): 8, (0, 9): 9, (1, 0): 10, (1, 1): 11, (1, 2): 12, (1, 3): 13, (1, 4): 14, (1, 5): 15, (1, 6): 16, (1, 7): 17, (1, 8): 18, (1, 9): 19, (2, 0): 20, (2, 1): 21, (2, 2): 22, (2, 3): 23, (2, 4): 24, (2, 5): 25, (2, 6): 26, (2, 7): 27, (2, 8): 28, (2, 9): 29, (3, 0): 30, (3, 1): 31, (3, 2): 32, (3, 3): 33, (3, 4): 34, (3, 5): 35, (3, 6): 36, (3, 7): 37, (3, 8): 38, (3, 9): 39, (4, 0): 40, (4, 1): 41, (4, 2): 42, (4, 3): 43, (4, 4): 44, (4, 5): 45, (4, 6): 46, (4, 7): 47, (4, 8): 48, (4, 9): 49, (5, 0): 50, (5, 1): 51, (5, 2): 52, (5, 3): 53, (5, 4): 54, (5, 5): 55, (5, 6): 56, (5, 7): 57, (5, 8): 58, (5, 9): 59, (6, 0): 60, (6, 1): 61, (6, 2): 62, (6, 3): 63, (6, 4): 64, (6, 5): 65, (6, 6): 66, (6, 7): 67, (6, 8): 68, (6, 9): 69, (7, 0): 70, (7, 1): 71, (7, 2): 72, (7, 3): 73, (7, 4): 74, (7, 5): 75, (7, 6): 76, (7, 7): 77, (7, 8): 78, (7, 9): 79, (8, 0): 80, (8, 1): 81, (8, 2): 82, (8, 3): 83, (8, 4): 84, (8, 5): 85, (8, 6): 86, (8, 7): 87, (8, 8): 88, (8, 9): 89, (9, 0): 90, (9, 1): 91, (9, 2): 92, (9, 3): 93, (9, 4): 94, (9, 5): 95, (9, 6): 96, (9, 7): 97, (9, 8): 98, (9, 9): 99}

如果要在给定键列表的情况下将dict初始化为某个常量值,可以使用以下方法:

这将给你:

{(0, 0): None,
 (0, 1): None,
 (0, 2): None,
 (1, 0): None,
 (1, 1): None,
 (1, 2): None,
 (2, 0): None,
 (2, 1): None,
 (2, 2): None}

有些元组是可散列的,如下所示

>>我的元组
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2)]
>>>my_dict={t:my_tuples中的t无}
>>>我的字典
{(0,0):无,(0,1):无,(0,2):无,(1,0):无,(1,1):无,(1,2):无}
其他人则不然。e、 g

>>我的元组=[([0,1],[1,1]),([0,2],[1,2])]
>>>my_dict={t:my_tuples中的t无}
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“”,第1行,在
TypeError:不可损坏的类型:“列表”
>>>

我的元组是一个元组列表

my_tuples = [[(n,k) for n in range(10)] for k in range(10)]
删除括号将创建元组列表

my_tuples = [(n,k) for n in range(10) for k in range(10)]
我的字典可以像你那样制作

my_dict = dict(zip(my_tuples, [None]*len(my_tuples))
或者用字典理解

my_dict = {x:None for x in my_tuples}


你能澄清一下吗:你总是想要
,还是那些值来自
一些其他的
?谢谢,马克。是的,最初它们将被设置为无,直到函数运行并更改它们。因此,它们将以“无”开头,但根据函数的结果,结果会有所不同。也许值得一提的是,当第二个参数为
[]
时,
fromkeys
可能会导致一些“意外”行为,这对“some\u other\u iterable”不起作用正如OP在他们的问题中所问的那样,这很公平-在我的回答后,门柱被移动了。@python_学习者同意,使用
fromkeys()
,使用可变默认值可能不是一个好主意。马克,非常感谢!这太有用了。尼克,非常感谢你!这真的很有帮助,我将把它和马克的答案一起添加到我的笔记中。非常感谢您的帮助。@J.B.别担心-如果您确实想直接从iterableThanks制作口述,请参阅我的编辑,Josh。我学到了很多!谢谢你抽出时间。
my_tuples = [(n,k) for n in range(10) for k in range(10)]
x=dict()

for item in my_tuples:
    x[item]=None