1.规则:
写一个函数,将两个dict(key是数字,value是string)进行合并,函数返回合并后的dict。
规则如下:如果一个key仅仅存在于其中一个dict中,则直接加入合并后的dict;
如果一个key在两个dict中都存在,那么给定一个choice值,choice可以是任何string,如果choice是任一个dict中的value,则写入,否则不写入。
参考答案:
def function(lefdict,rightdict,choice):
samelist=lefdict.keys() & rightdict.keys() # dict.keys()返回的是一个可迭代对象,取两个dict的keys的交集
diflist = lefdict.keys() ^ rightdict.keys() # 取两个dict的keys的不同集
print("samelist", samelist)
print("diflist", diflist)
newdict={}
for key, value in lefdict.items():
print(key, value)
if key in diflist:
newdict[key]=value
elif key in samelist:
if value==choice:
newdict[key]=value
for key,value in rightdict.items():
if key in diflist:
newdict[key]=value
elif key in samelist:
if value==choice:
newdict[key]=value
print(samelist,diflist)
print("newdict", newdict)
return newdict
function({1:'a',2:'b',3:'c'},{4:'f',2:'b',3:'d'},'d')
2. 列表[1,2,3,4,5],请使用map()函数输出[1,4,9,16,25],并使用列表推导式提取出大于10的数,最终输出[16,25]。
map(函数, 序列1, 序列2, ...)
Python 2.x 返回列表。
Python 3.x 返回迭代器。
list = [1,2,3,4,5]
def fn(x):
return x ** 2
res = map(fn,list)
res = [i for i in res]
print(res)
res = [i for i in res if i > 10]
print(res)
(LeetCode):
3. 给定一个整数数组 nums
和一个目标值 target
,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
class Solution:
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
length = len(nums)
for i in range(length):
tmp = target - nums[i]
try:
if nums.index(tmp) != i: #如果找不到值会抛出异常
return [i, nums.index(tmp)]
break
except: #抛出的异常利用 try except来承接
continue
if __name__ == '__main__':
nums = [2, 5, 5, 11]
target = 10
solution = Solution()
result = solution.twoSum(nums, target)
print(result)
4. 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例 1:
输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其
长度为 3。
示例 2:
输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b"
,所以其长度为 1。
示例 3:
输入: "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "wke"
,所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke"
是一个子序列,不是子串。
class Solution:
def lengthOfLongestSubstring(self, s):
"""
:type s: str
:rtype: int
"""
st = {}
i, ans = 0, 0
for j in range(len(s)):
if s[j] in st:
i = max(st[s[j]], i)
ans = max(ans, j - i + 1)
st[s[j]] = j + 1
return ans;
有不同见解,欢迎留言讨论!