我在Python中有两个迭代,我想成对地遍历它们:
foo = (1, 2, 3)
bar = (4, 5, 6)
for (f, b) in some_iterator(foo, bar):
print "f: ", f, "; b: ", b
Run Code Online (Sandbox Code Playgroud)
它应该导致:
f: 1; b: 4
f: 2; b: 5
f: 3; b: 6
Run Code Online (Sandbox Code Playgroud)
一种方法是迭代索引:
for i in xrange(len(foo)):
print "f: ", foo[i], "; b: ", b[i]
Run Code Online (Sandbox Code Playgroud)
但这对我来说似乎有点不合时宜.有没有更好的方法呢?
是否可以在Python中创建字典理解(用于键)?
没有列表推导,你可以使用这样的东西:
l = []
for n in range(1, 11):
l.append(n)
Run Code Online (Sandbox Code Playgroud)
我们可以将其缩短为列表理解:l = [n for n in range(1, 11)]
.
但是,假设我想将字典的键设置为相同的值.我可以:
d = {}
for n in range(1, 11):
d[n] = True # same value for each
Run Code Online (Sandbox Code Playgroud)
我试过这个:
d = {}
d[i for i in range(1, 11)] = True
Run Code Online (Sandbox Code Playgroud)
不过,我得到一个SyntaxError
上for
.
另外(我不需要这部分,但只是想知道),你能否将字典的键设置为一堆不同的值,如下所示:
d = {}
for n in range(1, 11):
d[n] = n
Run Code Online (Sandbox Code Playgroud)
字典理解是否可以实现?
d = {}
d[i for i in range(1, 11)] = [x for …
Run Code Online (Sandbox Code Playgroud) 我想从中得到:
keys = [1,2,3]
Run Code Online (Sandbox Code Playgroud)
对此:
{1: None, 2: None, 3: None}
Run Code Online (Sandbox Code Playgroud)
这是一种pythonic方式吗?
这是一种丑陋的方式:
>>> keys = [1,2,3]
>>> dict([(1,2)])
{1: 2}
>>> dict(zip(keys, [None]*len(keys)))
{1: None, 2: None, 3: None}
Run Code Online (Sandbox Code Playgroud) 我是Python的新手,我有一个简单的问题,比如我有一个项目列表:
['apple','red','apple','red','red','pear']
Run Code Online (Sandbox Code Playgroud)
什么是将列表项添加到字典中的最简单方法,并计算项目在列表中出现的次数.
所以对于上面的列表,我希望输出为:
{'apple': 2, 'red': 3, 'pear': 1}
Run Code Online (Sandbox Code Playgroud) 我尝试以编程方式创建列表字典是不允许我单独地解决字典键.每当我创建列表字典并尝试附加到一个键时,所有这些都会更新.这是一个非常简单的测试用例:
data = {}
data = data.fromkeys(range(2),[])
data[1].append('hello')
print data
Run Code Online (Sandbox Code Playgroud)
实际结果: {0: ['hello'], 1: ['hello']}
预期结果: {0: [], 1: ['hello']}
这是有效的
data = {0:[],1:[]}
data[1].append('hello')
print data
Run Code Online (Sandbox Code Playgroud)
实际和预期结果: {0: [], 1: ['hello']}
为什么fromkeys
方法不能按预期工作?
我发现的唯一方法是为python2工作或仅返回元组列表.
是否可以对字典进行排序,例如{"aa": 3, "bb": 4, "cc": 2, "dd": 1}
,通过其值?
我想要实现的排序字典顺序是从最大到最小.我希望结果看起来像这样:
bb 4
aa 3
cc 2
dd 1
Run Code Online (Sandbox Code Playgroud)
排序后我想将它存储到文本文件中.
我有以下代码:
[x ** 2 for x in range(10)]
Run Code Online (Sandbox Code Playgroud)
当我在Python Shell中运行它时,它返回:
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
Run Code Online (Sandbox Code Playgroud)
我搜索过,似乎这被称为列表理解,但它是如何工作的?
我需要选择某个值或更大值的字典元素.我知道如何使用列表,列表中的项目返回列表大于某个值.
但我不知道如何将其翻译成字典的功能.我设法得到对应(我认为)大于或等于数字的值的标签,但使用以下仅给出标签:
[i for i in dict if dict.values() >= x]
Run Code Online (Sandbox Code Playgroud) 我发现关于字典推导以下堆栈溢出后Python2.7
和Python 3+
:创建与Python列表理解的字典,说明我能够把字典解析如下:
d = {key: value for (key, value) in sequence}
Run Code Online (Sandbox Code Playgroud)
我在Python 3中尝试过它.但是,它引发了一个异常.
d = {'a':1, 'b':2, 'c':3, 'd':4}
{key : value for (key, value) in d}
{key : value for key, value in d}
Run Code Online (Sandbox Code Playgroud)
这两个版本都提出了一个ValueError
说法ValueError: need more than 1 value to unpack
.
在Python3中进行字典理解的最简单/最直接的方法是什么?
在此Python文档中,以下内容用作生成器表达式的示例:
dict((fn(i+1), code)
for i, code in enumerate('FGHJKMNQUVXZ')
for fn in (int, str))
>> {1: 'F', '1': 'F', 2: 'G', '2': 'G', 3: 'H', '3': 'H', 4: 'J',...}
Run Code Online (Sandbox Code Playgroud)
我不明白第二个for
循环如何for fn in (int, str)
将int值转换为字符串并向字典添加一个额外的条目.
我找到了这个Stack Overflow问题,但是我仍然无法知道第二个for
循环在这种情况下是如何工作的.
python ×10
dictionary ×5
list ×3
python-3.x ×3
for-loop ×1
generator ×1
iterator ×1
sorting ×1