我想在一行中创建给定列表中的字典.字典的键将是索引,值将是列表的元素.像这样的东西:
a = [51,27,13,56] #given list
d = one-line-statement #one line statement to create dictionary
print(d)
Run Code Online (Sandbox Code Playgroud)
输出:
{0:51, 1:27, 2:13, 3:56}
Run Code Online (Sandbox Code Playgroud)
我没有任何具体的要求,为什么我要一个线.我只是在探索python,并想知道这是否可行.
我有:
words = ['hello', 'world', 'you', 'look', 'nice']
Run Code Online (Sandbox Code Playgroud)
我希望有:
'"hello", "world", "you", "look", "nice"'
Run Code Online (Sandbox Code Playgroud)
使用Python最简单的方法是什么?
如何获得在Python中定义方法的类?
我想要以下示例打印" __main__.FooClass
":
class FooClass:
def foo_method(self):
print "foo"
class BarClass(FooClass):
pass
bar = BarClass()
print get_class_that_defined_method(bar.foo_method)
Run Code Online (Sandbox Code Playgroud) 是否有在Python中使用异常链的标准方法?像Java引起的'异常'一样?
这是一些背景知识.
我有一个带有一个主要异常类的模块DSError
:
class DSError(Exception):
pass
Run Code Online (Sandbox Code Playgroud)
在这个模块的某个地方会有:
try:
v = my_dict[k]
something(v)
except KeyError as e:
raise DSError("no key %s found for %s" % (k, self))
except ValueError as e:
raise DSError("Bad Value %s found for %s" % (v, self))
except DSError as e:
raise DSError("%s raised in %s" % (e, self))
Run Code Online (Sandbox Code Playgroud)
基本上这个片段应该只抛出DSError并告诉我发生了什么以及为什么.问题是try块可能会抛出很多其他异常,所以我更喜欢我能做的事情如下:
try:
v = my_dict[k]
something(v)
except Exception as e:
raise DSError(self, v, e) # Exception chained...
Run Code Online (Sandbox Code Playgroud)
这是标准的pythonic方式吗?我没有在其他模块中看到异常链,那么在Python中如何完成?
假设我有一个字典.
data = {1:'b', 2:'a'}
Run Code Online (Sandbox Code Playgroud)
我希望按'b'和'a'对数据进行排序,以便得到结果
'a','b'
Run Code Online (Sandbox Code Playgroud)
我怎么做?
有任何想法吗?
我想首先按值排序,然后按第二个值排序.是否有捷径可寻?这是一个小例子:
A = [{'name':'john','age':45},
{'name':'andi','age':23},
{'name':'john','age':22},
{'name':'paul','age':35},
{'name':'john','age':21}]
Run Code Online (Sandbox Code Playgroud)
此命令用于对此列表进行排序'name'
:
sorted(A, key = lambda user: user['name'])
Run Code Online (Sandbox Code Playgroud)
但我如何按第二个值对此列表进行排序?就像'age'
在这个例子中.
我想要这样的排序(首先排序'name'
然后排序'age'
):
andi - 23
john - 21
john - 22
john - 45
paul - 35
Run Code Online (Sandbox Code Playgroud)
谢谢!
对于具有千位分隔符的打印号,可以使用python格式字符串:
'{:,}'.format(1234567890)
Run Code Online (Sandbox Code Playgroud)
但是,如何指定我需要一个千位分隔符的空间?
我偶然发现了以下代码:
for i,a in enumerate(attributes):
labels.append(Label(root, text = a, justify = LEFT).grid(sticky = W))
e = Entry(root)
e.grid(column=1, row=i)
entries.append(e)
entries[i].insert(INSERT,"text to insert")
Run Code Online (Sandbox Code Playgroud)
我不明白'i,a'位和搜索谷歌有关'for'的信息是一个痛苦的屁股,当我尝试和代码使用时我得到错误:
ValueError:需要多于1个值才能解压缩
有谁知道它做了什么或与它有关,我可以谷歌了解更多?
我想排序一个命名元组列表,而不必记住fieldname的索引.我的解决方案似乎相当尴尬,并希望有人会有一个更优雅的解决方案.
from operator import itemgetter
from collections import namedtuple
Person = namedtuple('Person', 'name age score')
seq = [
Person(name='nick', age=23, score=100),
Person(name='bob', age=25, score=200),
]
# sort list by name
print(sorted(seq, key=itemgetter(Person._fields.index('name'))))
# sort list by age
print(sorted(seq, key=itemgetter(Person._fields.index('age'))))
Run Code Online (Sandbox Code Playgroud)
谢谢,尼克
在C++中,我可以创建一个像...一样的数组
int* a = new int[10];
Run Code Online (Sandbox Code Playgroud)
在python中,我只知道我可以声明一个列表,而不是追加一些项目,或者像...
l = [1,2,3,4]
l = range(10)
Run Code Online (Sandbox Code Playgroud)
我可以按照给定的大小初始化列表,比如c ++,不做任何分配吗?
python ×10
list ×4
dictionary ×2
python-2.6 ×2
python-3.x ×2
sorting ×2
coding-style ×1
exception ×1
field-names ×1
join ×1
namedtuple ×1
python-2.x ×1
string ×1