Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python a(*{'q':'qqq'}),为什么只打印密钥_Python - Fatal编程技术网

Python a(*{'q':'qqq'}),为什么只打印密钥

Python a(*{'q':'qqq'}),为什么只打印密钥,python,Python,回溯: def a(*x): print x a({'q':'qqq'}) a(*{'q':'qqq'})#why only print key. 调用函数时,在列表或dict之前使用星号将其作为位置参数传入 例如: ({'q': 'qqq'},) ('q',) 调用函数时,在列表或dict之前使用星号将其作为位置参数传入 例如: ({'q': 'qqq'},) ('q',) 字典就是这样被转换成序列的 tupledictionary=tupledictionary.keys 出

回溯:

def a(*x):
    print x

a({'q':'qqq'})
a(*{'q':'qqq'})#why only print key.

调用函数时,在列表或dict之前使用星号将其作为位置参数传入

例如:

({'q': 'qqq'},)
('q',)

调用函数时,在列表或dict之前使用星号将其作为位置参数传入

例如:

({'q': 'qqq'},)
('q',)

字典就是这样被转换成序列的

tupledictionary=tupledictionary.keys

出于同样的原因

>>> a(*('test', 'testing'))
('test', 'testing')

>>> a(*{'a': 'b', 'c': 'd'})
('a', 'c')

为x指定键,而不是对,这就是字典转换为序列的方式

for x in dictionary:
tupledictionary=tupledictionary.keys

出于同样的原因

>>> a(*('test', 'testing'))
('test', 'testing')

>>> a(*{'a': 'b', 'c': 'd'})
('a', 'c')
为x指定键,而不是对

for x in dictionary:
将尝试将dict{'q':'qqq'}扩展为函数参数的逐项列表

请注意:

a(*{'q' : 'qqq'})
返回“q”,这正是您看到的。将字典强制为列表/元组时,只会得到键列表

将尝试将dict{'q':'qqq'}扩展为函数参数的逐项列表

请注意:

a(*{'q' : 'qqq'})

返回“q”,这正是您看到的。将字典强制为列表/元组时,只会获得键列表。

在函数调用中的表达式前面使用*将迭代表达式的值,在这种情况下,并使迭代中的每个项成为函数调用的另一个参数。在Python中对dict进行迭代会产生好坏的关键。

在函数调用中的表达式前面使用*会对dict表达式的值进行迭代,在这种情况下,会使迭代中的每个项成为函数调用的另一个参数。在Python中对dict进行迭代会产生更好或更坏的键。

迭代字典会产生它的键

tuple({'q' : 'qqq'})
如果要从字典中同时获取键和值,可以使用.items或.iteritems

d = {'a': 1, 'b': 2, 'c': 3 }

for x in d:
    print x  # prints a, b, c but not necessarily in that order

sorted(d): # Gives a, b, c in that order. No 1/2/3.

迭代字典将产生它的键

tuple({'q' : 'qqq'})
如果要从字典中同时获取键和值,可以使用.items或.iteritems

d = {'a': 1, 'b': 2, 'c': 3 }

for x in d:
    print x  # prints a, b, c but not necessarily in that order

sorted(d): # Gives a, b, c in that order. No 1/2/3.

您需要一个参数列表,然后告诉python以参数序列的形式发送dict。当dict转换为序列时,它使用键


我想您是在寻找**,而不是*

您需要的是参数列表,然后告诉python以参数序列的形式发送dict。当dict转换为序列时,它使用键


我想你真的在寻找**,而不是*

可能是因为当你对字典进行标准迭代时,它会返回**。它被转换为包含其键的序列。此示例展示了相同的行为:

sorted(d.items()) # [('a,' 1), ('b', 2), ('c', 3)]
要获得我假设您期望的结果,您可以将其作为变量关键字参数传递,如下所示:

>>> for i in {"a": "1", "b": "2"}:
...     print i
...
a
b

请注意,您现在基本上回到了开始的位置,但什么也没有得到。

可能是因为当您对字典进行标准迭代时,它会返回结果。它被转换为包含其键的序列。此示例展示了相同的行为:

sorted(d.items()) # [('a,' 1), ('b', 2), ('c', 3)]
要获得我假设您期望的结果,您可以将其作为变量关键字参数传递,如下所示:

>>> for i in {"a": "1", "b": "2"}:
...     print i
...
a
b

请注意,您现在基本上回到了开始的位置,但什么也没有得到。

您可以说*x将其参数x视为序列-python的序列类型是元组或列表。**将其参数视为映射。您可以说*x将其参数x视为序列-python的序列类型为元组或列表。**将其参数视为映射。顺便说一下:这里显示的不是回溯,而是输出。回溯是发生异常时显示的堆栈跟踪。顺便说一下:这里显示的不是回溯,而是输出。回溯是发生异常时显示的堆栈跟踪。**可能更糟,因为它会给出错误;它试图将dict作为命名参数的映射进行计算。**可能更糟糕,因为它会给出一个错误;它尝试将dict作为命名参数的映射进行计算。