2024-04-24 03:06:31 发布
网友
有没有可能这样做:
def f(): d={} d[1]='qwe' d[2]='rty' return d a,b=f()[1:2]
不是a,b=f()[1],f()[2] 而不是
a,b=f()[1],f()[2]
t=f() a,b=t[1],t[2]
我不会避免额外的线路和调用函数只有一次。你知道吗
是的,只要使用方法dict.values():
dict.values()
x,y = f().values()[0:2]
不支持;字典索引不支持切片,因为它在字典键中通常没有任何意义。你知道吗
不过,你可以自己滚,用类似的东西
a, b = map(f().get, [1, 2])
或者(谢谢@DSM)
a, b = operator.itemgetter(1, 2)(f())
它们稍有不同,如果f()的结果缺少1或2作为键,则第一个将默认分配None,第二个将引发KeyError。map(f().__getitem__, ...)应该相当于itemgetter,尽管可能稍微慢一点。你知道吗
f()
1
2
None
KeyError
map(f().__getitem__, ...)
itemgetter
我不清楚你到底想做什么。你在用整数给字典编索引。整数可以用作字典的键,但在您的情况下,列表似乎更有意义。字典和列表之间的一个重要区别是dicts没有排序。d[1]和d[2]在您的示例中不一定排在第一和第二位。因此,如果您依赖于顺序,那么标准字典无论如何都不会工作(一个^{}会)。你知道吗
d[1]
d[2]
(您的数据结构是由函数f()返回的事实在这里没有任何区别,因此为了更好的可读性,我将忽略它)
如果你有
lst = ['qwe', 'rty']
你可以简单的做
a, b = lst
把lst[0]分配给a,把lst[1]分配给b。列表也可以切片:
lst[0]
a
lst[1]
b
long_lst = range(1000) a, b = long_lst[500:502]
如果你真的想使用字典,你可以这样访问它的组件:
>>> d = {'a': 'AAA', 'b': 'BBB'} >>> d.keys() ['a', 'b'] >>> d.values() ['AAA', 'BBB'] >>> d.items() [('a', 'AAA'), ('b', 'BBB')]
但是如上所述,即使它们恰好在本例中的正确顺序,您也不能依赖字典的顺序,它会随着时间而改变。你知道吗
是的,只要使用方法
dict.values()
:不支持;字典索引不支持切片,因为它在字典键中通常没有任何意义。你知道吗
不过,你可以自己滚,用类似的东西
或者(谢谢@DSM)
它们稍有不同,如果
f()
的结果缺少1
或2
作为键,则第一个将默认分配None
,第二个将引发KeyError
。map(f().__getitem__, ...)
应该相当于itemgetter
,尽管可能稍微慢一点。你知道吗我不清楚你到底想做什么。你在用整数给字典编索引。整数可以用作字典的键,但在您的情况下,列表似乎更有意义。字典和列表之间的一个重要区别是dicts没有排序。} 会)。你知道吗
d[1]
和d[2]
在您的示例中不一定排在第一和第二位。因此,如果您依赖于顺序,那么标准字典无论如何都不会工作(一个^{(您的数据结构是由函数
f()
返回的事实在这里没有任何区别,因此为了更好的可读性,我将忽略它)如果你有
你可以简单的做
把
lst[0]
分配给a
,把lst[1]
分配给b
。列表也可以切片:如果你真的想使用字典,你可以这样访问它的组件:
但是如上所述,即使它们恰好在本例中的正确顺序,您也不能依赖字典的顺序,它会随着时间而改变。你知道吗
相关问题 更多 >
编程相关推荐