Python中"iterable","iterator"和"iteration"的最基本定义是什么?
我已阅读多个定义,但我无法确定其确切含义,因为它仍然不会沉入其中.
有人可以帮助我解释外行人的3个定义吗?
在Python 2.7中,字典既有iterkeys方法又有viewkeys方法(以及值和项的类似对),提供两种不同的方式来懒惰地迭代字典的键.该viewkeys方法提供的主要特征iterkeys,具有iter(d.viewkeys())实际上等效于d.iterkeys().此外,返回的对象viewkeys具有方便的类似集的功能.因此,有充分的理由看好viewkeys了iterkeys.
另一个方向呢?除了与早期版本的Python的兼容性之外,还有什么方法iterkeys比较好viewkeys?只要总是使用就会丢失任何东西viewkeys吗?
def izracunaj_dohvatljiva_stanja(funkcije_prijelaza):
dohvatljiva = []
dohvatljiva.extend(pocetno_stanje)
pomocna = collections.OrderedDict
for i in xrange(len(dohvatljiva)):
for temp in pomocna.keys(): <-----------------------------------this line
if temp.split(',')[0] == dohvatljiva[i]:
if funkcije_prijelaza.get(temp) not in dohvatljiva:
dohvatljiva.extend(funkcije_prijelaza.get(temp))
Run Code Online (Sandbox Code Playgroud)
我试图从有序的dict获取所有键,所以我可以迭代它但运行错误后发生: 点击图片
我正在查看包含此更改的2to3的输出:
- for file_prefix in output.keys():
+ for file_prefix in list(output.keys()):
Run Code Online (Sandbox Code Playgroud)
哪里output是字典.
这种变化有什么意义?为什么2to3这样做?
这种变化如何使代码Python 3兼容?
当我做:
d = {'x': 1, 'y': 2, 'z': 'randy'}
print(d.keys())
Run Code Online (Sandbox Code Playgroud)
结果是:
dict_keys(['x', 'y', 'z'])
Run Code Online (Sandbox Code Playgroud)
为什么会有dict_keys? 有办法摆脱它吗?
给定一个我想使用类型提示增强的函数(在 Python 3.9 中):
def my_func():
return my_dict.keys() # origin of my_dict is irrelevant
Run Code Online (Sandbox Code Playgroud)
我看过PEP 589和这个 Stack Overflow 问题,描述了如何使用TypedDict. 然而,这不是我试图实现的目标。
我想要字典键对象的返回类型。我知道可以使用将键对象转换为列表list(my_dict),然后使用返回类型list[key_type](使用key_typebeingint等str)。但这是要走的路吗?
my_dict>>> type(my_dict.keys())
<class 'dict_keys'>
Run Code Online (Sandbox Code Playgroud)
但是,我无法dict_keys像这样使用:
def my_func() -> dict_keys:
return my_dict.keys()
Run Code Online (Sandbox Code Playgroud)
Pylance 报告说,该my_dict.keys()类型属于_dict_keys[key_type, value_type]。为什么这种类型应该是“私有的”?它来自哪里?我们可以以某种方式使用它作为返回类型吗?
我有以下数据:
[{'id': ['132605', '132750', '132772', '132773', '133065', '133150', '133185', '133188', '133271', '133298']},
{'number': ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']},
{'id': ['1', '1', '1', '1', '1', '1', '1', '1', '1', '1']}]
Run Code Online (Sandbox Code Playgroud)
获取密钥列表的最佳方法是什么(好像它是dict而不是数组)?目前我在做:
>>> [list(i.keys())[0] for i in e.original_column_data]
['id', 'number', 'id']
Run Code Online (Sandbox Code Playgroud)
但这感觉有点hackish
source = [{'address': 15620, 'street': 490}, {'address': 10180, 'street': 2187}, {'address': 10190, 'street': 670}, {'address': 20900, 'street': 572}, {'address': 8190, 'street': 1103}, {'address': 43110, 'street': 225}, {'address': 24780, 'street': 1465}, {'address': 50130, 'street': 249},]
Run Code Online (Sandbox Code Playgroud)
我想列一个这样的清单。请帮我。谢谢。
result = (15620, 10180, 10190, 20900, 8190, 43110, 24780, 50130)
Run Code Online (Sandbox Code Playgroud) python ×8
python-3.x ×2
iterable ×1
iteration ×1
iterator ×1
key ×1
list ×1
python-2.7 ×1
python-2to3 ×1
terminology ×1