我有两个Python字典,我想编写一个返回这两个字典的表达式,合并.update()如果它返回结果而不是就地修改dict,那么该方法将是我需要的.
>>> x = {'a': 1, 'b': 2}
>>> y = {'b': 10, 'c': 11}
>>> z = x.update(y)
>>> print(z)
None
>>> x
{'a': 1, 'b': 10, 'c': 11}
Run Code Online (Sandbox Code Playgroud)
我怎样才能获得最终合并的词典z,不是x吗?
(要清楚的是,最后一次胜利的冲突处理dict.update()也是我正在寻找的.)
我在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的新手,我有一个简单的问题,比如我有一个项目列表:
['apple','red','apple','red','red','pear']
Run Code Online (Sandbox Code Playgroud)
什么是将列表项添加到字典中的最简单方法,并计算项目在列表中出现的次数.
所以对于上面的列表,我希望输出为:
{'apple': 2, 'red': 3, 'pear': 1}
Run Code Online (Sandbox Code Playgroud) 我有两个相同长度的列表:
[1,2,3,4] 和 [a,b,c,d]
我想创建一个我所拥有的字典 {1:a, 2:b, 3:c, 4:d}
最好的方法是什么?
我有一个tar文件,里面有多个文件.我需要编写一个python脚本,它将读取文件的内容并给出总字符数,包括字母总数,空格,换行符,所有内容,而不用解压缩tar文件.
我看过这个链接
但是我如何初始化字典呢?
说两个清单
keys = ['a','b','c','d']
values = [1,2,3,4]
dict = {}
Run Code Online (Sandbox Code Playgroud)
我想dict用keys&初始化values
zip如果迭代的长度不相等,我正在寻找一个很好的方法来引发异常的几个迭代.
在迭代项是列表或具有len方法的情况下,此解决方案简洁明了:
def zip_equal(it1, it2):
if len(it1) != len(it2):
raise ValueError("Lengths of iterables are different")
return zip(it1, it2)
Run Code Online (Sandbox Code Playgroud)
但是,如果it1和it2是生成器,则前一个函数将失败,因为未定义长度TypeError: object of type 'generator' has no len().
我想这个itertools模块提供了一种简单的方法来实现它,但到目前为止我还没有找到它.我想出了这个自制的解决方案:
def zip_equal(it1, it2):
exhausted = False
while True:
try:
el1 = next(it1)
if exhausted: # in a previous iteration it2 was exhausted but it1 still has elements
raise ValueError("it1 and it2 have different lengths")
except StopIteration:
exhausted = True
# it2 must …Run Code Online (Sandbox Code Playgroud) 我的第一个想法是写一个interator,或者做一些列表理解.但是,就像我在python中编写的每个5-10行方法一样,有人通常可以指示我在标准库中调用来完成相同的操作.
我如何从两个元组x和y一个字典z?
x = ( 1, 2, 3 )
y = ( 'a', 'b', 'c')
z = { }
for index, value in enumerate(y):
z[value] = x[index]
print z
# { 'a':1, 'b':2, 'c':3 }
Run Code Online (Sandbox Code Playgroud) x = ['1', '2', '3', '4']
y = [[1,0],[2,0],[3,0],[4,]]
Run Code Online (Sandbox Code Playgroud)
我想创建一个字典,所以x和y值对应如下:
1: [1,0], 2: [2,0]
Run Code Online (Sandbox Code Playgroud)
等等
我有:
list_nums = [1,18]
list_chars = ['a','d']
Run Code Online (Sandbox Code Playgroud)
我想要:
list_num_chars = [{'num':1, 'char':'a'},
{'num':18, 'char':'d'}]
Run Code Online (Sandbox Code Playgroud)
是否有比以下更优雅的解决方案:
list_num_chars = [{'num':a, 'char':b} for a,b in zip(list_nums, list_chars)]
Run Code Online (Sandbox Code Playgroud)